什么是微服务

微服务是一些协同工作的小而自治的服务。

发展历史

微服务是应运而生,它不是谁发明的,而是现实社会总结出来的一种模式。

特性

我们可以把微服务看成一种细粒度的架构。当我们参与大型项目构建时会考虑到使用模块化的思想尽可能减少模块间的依赖,但这些模块间的界限很难维护,模块间相似的代码会有很多,这就增加了修复bug的难度。 在单一系统内,通常会创建一些抽象层或者模块来保证代码的内聚性,从而避免这个问题。内聚性是指将相关代码放在一起。内聚性在微服务架构里占有非常重要的地位。 微服务将这个理念应用到独立服务器上,根据业务的边界来确定服务的边界,这样就能确定某个功能放哪里。 微服务很小,专注于做好一件事 自治性:一个为服务就是一个独立的实体。他可以独立的部署在PAAS(Platform As A Service ,平台及服务)上,亦可以作为一个操作系统进程存在。 服务会暴露出API(Application Programming Interface,应用编程接口),然后服务之间通过这些API进行通信

好处:

  • 技术异构型:我们可以使用多种语言来编写程序,只需要保持相同API即可。
  • 弹性:当一个组件不可用时并不会导致级联故障。
  • 扩展:以前一整套系统只能被当做一个整体来进行扩展,需要花费大量的时间精力去进行整个系统的代码修改,在使用微服务的系统里,我们只需要对想扩展的那个服务进行扩展
  • 简化部署:使用微服务架构的系统不会像原来那样,每次更新都需要把整个项目重新部署一次,因为此时每个服务都是独立的,我们只需要把修改过代码的服务部署上去即可,有问题也只是这单个的服务,我们可以进行快速发现以及回滚。
  • 与组织结构相匹配:一个团队或者小组专门负责一个服务,维护一个代码库。
  • 可组合性:我们应该做到每个服务都是可重复使用的,根据客户需求对不同服务进行拼接组装。
  • 可替代性的优化:当你进入一个公司时,可能要面临重构上任程序员留下来的系统,很有可能让你眼花缭乱心惊胆战。当使用微服务时,每个服务只有很少的代码,重写或者移除一个或者多个服务也变得容易。