Fork me on GitHub

微服务

微服务

  • Eric Evans 的《领域驱动设计》
  • Alistair Cockburn 的六边形架构理论
    Netflix 分享了构建大型反脆弱系统的经验 github : https://github.com/Netflix

    什么是微服务

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

    1. 很小,专注于做好一件事
      在一个单块系统内,通常会创建一些抽象层或者模块来保证代码的内聚性,从而避免上述问题。
      内聚性是指将相关代码放在一起,在考虑使用微服务的时候,内聚性这一概念
      很重要。Robert C. Martin 有一个对单一职责原则(Single Responsibility Principle,http://
      programmer.97things.oreilly.com/wiki/index.php/The_Single_Responsibility_Principle)的论述:
      “把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离开来。 ”该论
      述很好地强调了内聚性这一概念。 也让我同时想到了tw提出的正交设计。
  • 1.1 根据业务的边界来确定服务的边界
    那就出现了一个问题,业务的辩解确定服务的边界,但是不可避免有时候领域的对象涉及很广很复杂。
    一个微服务应该可以在两周内完全重写,这个经验法则在他所处的特定上下文中是有效的。
    这个时候请遵守上述的原则,可能有的时候很有用。
    使用的服务越小,独立性带来的好处就越多。但是管理大量服务也会越复杂。

微服务好处

  • 弹性工程学的一个关键概念是舱壁。如果系统中的一个组件不可用了,但并没有导致级联
    故障,那么系统的其他部分还可以正常运行。服务边界就是一个很显然的舱壁。
    庞大的单块服务只能作为一个整体进行扩展,微服务只需要把某个服务配置多个就可以啦。
  • 与组织结构相匹配
    康威定律
    小型代码库上工作的小团队更加高效
  • 可组合性
    桌面网站或者移动应用程序的时代已经过去了,现在我们需要考虑的应用程序种类包括 Web、原生应用、移动端 Web、平板应用及可穿戴设备等,针对每一种都应该考虑如何对已有功能进行组合来实现这些应用
  • 可替代性的优化

    面向服务的架构

    SOA(Service-Oriented Architecture,面向服务的架构)是一种设计方法,其中包含多个服
    务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作
    系统进程中。服务之间通过网络调用,而非采用进程内调用的方式进行通信
    实施 SOA 时会遇到这些问题:通信协议(例如 SOAP)如何选择、第三方中间件如何选
    择、服务粒度如何确定等,目前也存在一些关于如何划分系统的指导性原则,但其中有很
    多都是错误的。微服务架构是 SOA 的一种特定方法!

其他分解技术

共享库

本文欢迎转载,但是希望注明出处并给出原文链接。 如果你有任何疑问,欢迎在下方评论区留言,我会尽快答复。 如果你喜欢或者不喜欢这篇文章,欢迎你发邮件到 alonecong@126.com 告诉我你的想法,你的建议对我非常重要。

------ 本文结束感谢您的阅读! ------
0%