微服务设计——读书笔记(一)
一 什么是微服务
微服务就是一些协同工作的小而自治的服务。
1 小而专注
微服务将单一职责原则应用到了独立的服务上,根据业务范围来确定服务的边界,一个服务专注于一个业务范围,避免代码库过大。一般来讲,一个微服务应该在两周之内可以完全重构,但不能盲目追求小,一个微服务的业务范围越小,独立性带来的好处就越多,整个系统所需管理的服务就越多。
2 自治性
一个微服务就是一个独立的实体,可以单独部署在PAAS(Platform as a service 平台即服务)上,我们要尽量避免把多个服务部署到同一台机器上,服务之间均通过网络调用来进行通信,加强了服务之间的隔离性,避免紧耦合。服务暴露出API(Application Programming Interface,应用编程接口),服务之间通过API进行通信。API的实现不应该和消费方耦合,在微服务方案中,任何一个微服务出问题,都不会影响其他功能。
二 微服务的主要好处
技术异构性
在微服务的系统中,每一个微服务都可以使用全新的技术来开发,因此每个微服务都可以选择最适合自己业务的语言,数据库来开发,不受其他模块的限制。比如文章模块更加适合采用文档数据库,而对于处理好友之间的关系,采用图数据库也许更加合适。
弹性
在单体应用程序中,如果服务发生故障,那么会导致所有功能不可用,单体应用程序中为了避免这种情况,通常将同一个应用部署到不同的服务器上。而微服务天生就有这种处理服务降级和服务,虽然微服务有很好的弹性,但是还是要谨慎对待,分布式系统中网络和机器所引发的问题。
扩展
庞大的单体应用只能作为一个整体来扩展,哪怕只有一小部分存在性能问题,也需要对整个系统进行扩展。如果使用微服务,则可以只对需要扩展的服务进行扩展,把不常用的服务运行在较小,性能较差的硬件上。
简化部署
在单体应用中即使只修改了一行代码,也需要重新部署整个应用。这种部署的影响很大,风险很大,因此相关负责人不敢轻易进行发布。于是部署的频率就低了很多,但两次发布之间差距越大,出现问题的可能性就越大。
与组织结构相匹配
微服务架构可以很好地将架构与组织结构相匹配,避免出现过大的代码库。从而获得理想的团队大小及生产力。
可组合性
在过去单体应用程序强调主要好处是方便重用已有功能,而在微服务中,根据不同的目的,人们可以通过不同的方式使用同一功能。现在我们需要考虑的应用的种类包括Web,手机APP,移动端Web,平板应用,可穿戴设备。
在微服务系统中,系统会开放很多接口供外部程序使用,当情况改变时,可以使用不同的方式构建应用。
对替代性的优化
想要重构单体应用的成本是高昂的,想要删除某个模块有可能引发其他问题,而在微服务中,想要重构或移除一个微服务,所面临的阻碍也很小。