微服务设计——读书笔记(一)

一 什么是微服务

微服务就是一些协同工做的小而自治的服务。数据库

1 小而专一

微服务将单一职责原则应用到了独立的服务上,根据业务范围来肯定服务的边界,一个服务专一于一个业务范围,避免代码库过大。通常来说,一个微服务应该在两周以内能够彻底重构,但不能盲目追求小,一个微服务的业务范围越小,独立性带来的好处就越多,整个系统所需管理的服务就越多。编程

2 自治性

一个微服务就是一个独立的实体,能够单独部署在PAAS(Platform as a service 平台即服务)上,咱们要尽可能避免把多个服务部署到同一台机器上,服务之间均经过网络调用来进行通讯,增强了服务之间的隔离性,避免紧耦合。服务暴露出API(Application Programming Interface,应用编程接口),服务之间经过API进行通讯。API的实现不该该和消费方耦合,在微服务方案中,任何一个微服务出问题,都不会影响其余功能。服务器

二 微服务的主要好处

技术异构性

在微服务的系统中,每个微服务均可以使用全新的技术来开发,所以每一个微服务均可以选择最适合本身业务的语言,数据库来开发,不受其余模块的限制。好比文章模块更加适合采用文档数据库,而对于处理好友之间的关系,采用图数据库也许更加合适。网络

弹性

在单体应用程序中,若是服务发生故障,那么会致使全部功能不可用,单体应用程序中为了不这种状况,一般将同一个应用部署到不一样的服务器上。而微服务天生就有这种处理服务降级和服务,虽然微服务有很好的弹性,可是仍是要谨慎对待,分布式系统中网络和机器所引起的问题。架构

扩展

庞大的单体应用只能做为一个总体来扩展,哪怕只有一小部分存在性能问题,也须要对整个系统进行扩展。若是使用微服务,则能够只对须要扩展的服务进行扩展,把不经常使用的服务运行在较小,性能较差的硬件上。分布式

简化部署

在单体应用中即便只修改了一行代码,也须要从新部署整个应用。这种部署的影响很大,风险很大,所以相关负责人不敢轻易进行发布。因而部署的频率就低了不少,但两次发布之间差距越大,出现问题的可能性就越大。微服务

与组织结构相匹配

微服务架构能够很好地将架构与组织结构相匹配,避免出现过大的代码库。从而得到理想的团队大小及生产力。性能

可组合性

在过去单体应用程序强调主要好处是方便重用已有功能,而在微服务中,根据不一样的目的,人们能够经过不一样的方式使用同一功能。如今咱们须要考虑的应用的种类包括Web,手机APP,移动端Web,平板应用,可穿戴设备。
在微服务系统中,系统会开放不少接口供外部程序使用,当状况改变时,可使用不一样的方式构建应用。优化

对替代性的优化

想要重构单体应用的成本是高昂的,想要删除某个模块有可能引起其余问题,而在微服务中,想要重构或移除一个微服务,所面临的阻碍也很小。orm