“创建微服务”一书的摘要

我对微服务架构一无所知,因此决定阅读并概述Sam Newman的书《创建微服务》。我认为,对于那些开始涉足这一主题的人来说,它是一个很好的介绍。


微服务


微服务架构的思想基于几个概念:面向主题的设计,连续交付,按需虚拟化,基础架构自动化,小型独立团队和可扩展系统。微服务是一种小型(可以在两周内完全重写)的自治服务,仅执行一项任务。同时,微服务的边界是在业务边界的基础上形成的。


该方法的优点:


  • 技术上的异质性是可能的;
  • 优雅的退化很容易实现;
  • 系统的各个部分独立扩展;
  • 独立部署服务;
  • 团队之间的责任分担简单。

通过将代码放入库中,似乎可以替换微服务架构。但这只能解决部分问题-技术上的异质性,简单的扩展,独立部署是不可能的。此外,仍然存在无法控制的连接问题。


在某些语言(例如Erlang)中,程序(模块)的各个部分可以独立缩放和部署。但这是该规则的例外。


微服务不是灵丹妙药。它们受到分布式系统的所有问题的困扰。重要的是要学习如何以高质量的方式部署,测试和监视这样的系统。微服务架构并不适合所有公司。


开发架构师


在开发由许多服务组成的系统时,架构师的作用会增加。


. . , , . — . , , , .


— , , .


:


  • ;
  • ;
  • .


( ) .


— , . , , .


. , . .


( DDD) — .


, , . . , , — .


« », -.


. : , , - . , -.



:


  • - ;
  • ();
  • .

-, , — . , . — . , — .


, «» , , . , - . . , .



, . . «-», .


— . . , ( ). ( ).


, — RPC REST. RPC — , , . REST — , ( REST-).


. - ( ATOM) . , , .



. : , — . -, .



.


— ( 1.5.3 2.0.0) . URI (, /v1/createUser/, /v2/createUser/), , HTTP, .


( 1.5.3 2.0.0), — , . , .



, . .


— . , , .


— API-, . , ( ).


— backend-for-frontend (BFF). (, ) API- .


, API-.



(, CMS CRM). . — , API.



. , , .


. — . , , . : ; .


, . — . . , (, , ).


. . :


  • ;
  • ;
  • , ;
  • ( Netflix).


. , (, ) . (-).


( , , ). . . .


, . , Chef, Puppet Ansible. — , . — , deb-. . , . — .


LXC- — . . Docker — , , Kubernetes.



- , , . , , -. E2e , .


- - — (), (). . — Mountebank.


(e2e) . CI, , . CDC ( ).


- . ( ).


. .


-, .


- : — . . -.


( - ) — . (, , - -). , . , . , .



.


-, , . , .


-, . , (, logstash) (, Kibana) .


( , ) -. , - .


: - .


. , .



. — , , . — , . . , .


, :


  1. . , - - . , — , .
  2. HTTP(S) Basic Auth. -, HTTPS, SSL-. -, ( Basic Auth).
  3. . , — , , .
  4. . , .
  5. - (HMAC). , , . ( JWT) . — , .
  6. API-. , , API-. , , .

. , .


. , IP- . .


. , .



«, , ­, »


, , , .




— , , - . , .


: , , . . , , .


— (graceful degradation).


— . , - .


— . , , , . , , - .


— , . , , ( ), . . «», , .


, .

— . . .



— . . .


— . . - , .


— , (), . . .


. , .



, -, :


  • , , ;
  • - , , , , ;
  • , , , .

, , .


HTTP . cache-control expires ETag . HTTP, , .


. , . , , - . , .


— . ( , , ) . , .


CAP


: , . .



最简单的方法是使用DNS。如果其功能还不够,则可以使用Zookeeper,Consul或Eureka之类的工具。


文献资料


API服务需要记录在案。非常需要将代码和文档连接起来,并且不可能更改一件事。例如,您可以使用Swagger或HAL。


摘要


微服务架构基于以下几个原则:


  • 围绕业务概念进行建模;
  • 自动化文化;
  • 内部实施的隐藏细节;
  • 全面分权;
  • 独立部署;
  • 孤立的故障;
  • 综合观察。

All Articles