最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

构建和部署微服务的模式

  • 2014-08-20
  • 本文字数:1164 字

    阅读完需:约 4 分钟

微服务管理意味着要看管大量相互通信的小型系统并提供自动配置功能,此外基础设施自动化也是极其重要的, James Lewis 在做技术与实践分享的时候声称这些有助于他管理日益增长的运维复杂度,而这些复杂度就是由于微服务架构造成的。

在ThoughtWorks 工作的咨询师James 对微服务的起源进行了描述,他认为这是对我们目前用于构建应用的方式的一种回应。一直以来,我们都是在构建那种庞大的而且难以修改、测试和管理的单片应用,这种应用从根本上来说就像是一个由像意大利面条那样乱作一团的代码所构成的大泥球 big balls of mud )。解决方案就是将原来的单片应用构建为更小的事物,并通过某些方式让它们相互之间能够进行通讯。

对于 James 而言,微服务意味着先选择一套大型的应用程序,然后识别出限界上下文 bounded contexts )及其内部的业务功能,并对它们进行分割,重要的是要将数据一起进行分割,也就是说要采用应用数据库而非集成数据库。为了理解业务领域的内容,关键的一点就是要在一开始就采用上下文图 context map )这个工具,James 引用了他的同事 lan Cartwright 的一段话:

业务和架构应该是同构的。业务人员应该能够通过查看架构的总体示意图来了解其反映的业务内容,同样,作为技术人员,我们应该能够通过浏览业务来领会其展现的架构内容。

微服务架构的一个很重要的方面就是规模,James 认为单一职责模式(SRP)( Single Responsibility Pattern )是一种很好的衡量标准。一个服务应该只有一个进行改动的原因,这在实践中意味着它应该是小型的并且足够专注,进而能够从概念上进行理解和把握。

James 认为微服务的一个核心概念就是能够对每个服务进行独立部署和扩展的可能性;一个服务可以被部署为多个实例,而不同的服务也可以托管在同一台服务器上。James 强调,在构建和部署分布式系统的时候,对自动化配置的关注是至关重要的,每个服务或者应用都必须自动地进行构建、部署和扩展。微服务的许多复杂性都来自于集成过程,但是我们可以应用一些模式来进行应对,还可以参考《持续交付》一书中关于构建过程的模式。

Chef Puppet 这样的工具有助于实现机器的自动化配置,大量的服务会引入一定的复杂度,使用这些工具来进行基础设施自动化也是控制这些复杂度的重要方式。Phoenix 基础架构模式描述了一种我们利用基础架构自动化来再造所有的基础架构的方式,比如我们应该能够将电脑的信息都清除,然后运行一个脚本来重新构建它及其所有的依赖。

James 所提到的微服务大会定于十一月份下旬在伦敦举办。

查看原文地址: http://www.infoq.com/news/2014/07/building-deploying-microservices


感谢赵震一对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-20 04:122722

评论

发布
暂无评论
发现更多内容

学习总结(第二周)

Geek_1d37ea

架构实战营

Android妹子深夜和我视频,哭的像个泪人,我该怎么安慰

android 程序员 移动开发

Android学习别“走弯路”,django实战项目源码

android 程序员 移动开发

Android布局优化技巧大盘点,最新BAT大厂面试者整理的Android面试题目

android 程序员 移动开发

Android应用Context详解及源码解析,Android大厂技术面试题汇总

android 程序员 移动开发

Android应用开发编译框架流程与IDE及Gradle概要,android游戏开发从入门到精通

android 程序员 移动开发

Android开发5年,怎么样通过自学拿到40W年薪的?,kotlin语言架构

android 程序员 移动开发

Android基础进阶 - 消息机制 之Native层分析,统统给你解决

android 程序员 移动开发

Android开发之Theme、Style探索及源码浅析,kotlin语言实例精解

android 程序员 移动开发

Android应用保活实践,字节跳动Android研发岗这些知识点内部泄露出来了

android 程序员 移动开发

Android开发3年,我转Java后台了,真香,想转行当程序员的必看

android 程序员 移动开发

Android开发5年,分享下初级-中级-高级工程师-划分标准

android 程序员 移动开发

Android基础系列(3)编译时注解处理器APT,android订餐系统源码

android 程序员 移动开发

Android应用启动流程分析(1),android应用开发实战项目

android 程序员 移动开发

Android应用启动流程分析,IDEA太强悍了

android 程序员 移动开发

Android开发三年,面了八家公司终于腾讯上岸,含泪整理面经

android 程序员 移动开发

Android岗常见40道面试题,面试前必须了解的知识点!,android开发工程师企业所在区域

android 程序员 移动开发

Android开发五年,面试阿里才发现这些知识点没完全掌握;你知道吗

android 程序员 移动开发

Android开发7年,疫情期间八家大厂高工的面试经历和真题整理

android 程序员 移动开发

Android开发之旅:android架构,并发知识体系大全

android 程序员 移动开发

Android大牛近期大厂面试详解(附解答),hashmap底层原理

android 程序员 移动开发

Android小白在两年时间成为一个大牛,我究竟做了什么?

android 程序员 移动开发

Android屏幕适配前先了解这些,在阿里工作5年了

android 程序员 移动开发

Android开发UI新技能,你get这个新技能了吗?(附源码详解)

android 程序员 移动开发

Android基础之Binder分析,flutter环境变量配置

android 程序员 移动开发

Android大牛是如何炼成的:郭霖的成长之路专访,flutter游戏引擎

android 程序员 移动开发

Android学习趋势:讲一下音视频热点知识,移动设备开发图书

android 程序员 移动开发

Android布局优化:include-、merge,android开发入门与实战作者

android 程序员 移动开发

Android干货---丢掉你老旧的参数传递方式,投入Bracer的怀抱吧。

android 程序员 移动开发

Android开发了解这些,自然无惧面试,2021最新Android面试笔试

android 程序员 移动开发

Android复习资料——常见面试算法题汇总,2021年最新Android大厂面试笔试题分享

android 程序员 移动开发

构建和部署微服务的模式_SOA_Jan Stenberg_InfoQ精选文章