微服务
时间:2020-12-02 10:09:09
参考:
- 《微服务设计》-- Sam Newman 著 崔力强、张骏译
微服务#
相对于单体服务来说,每个服务只负责一小部分业务,服务之间通过接口进行通信。
服务拆分#
把一个单体服务拆分成多个微服务。拆分策略:
- 划分边界,考虑业务、公司组织架构等。
- 服务拆分,逐步替代,先用微服务替换一个业务模块,然后从单体项目中把该模块一处,逐步用微服务替换全部服务。
故障隔离#
Hystrix#
持续集成和持续部署#
测试#
- 单元测试:验证函数、方法是否存在问题,不需要和数据库交互。(测试用例自动测试)
- 服务测试:验证单个服务是否存在问题,服务依赖可以使用Mock或打桩的方式替代。
- 端到端测试:界面测试,测试整个项目的业务。
项目构建 Jekins#
自动化构建。
项目部署 Docker#
一个服务一个镜像,屏蔽环境影响,隔离不同服务。
服务编排 Kubernetes#
服务集群,依赖等。
部署策略#
-
蓝绿部署:线上运行项目版本Va,新部署版本Vb。在Va正常运行的情况下部署版本Vb,之后对Vb进行测试,如果没问题把流量从Va导入Vb,此时保留Va,当Vb稳定之再停掉Va。
-
金丝雀发布:向上运行项目版本Va,新部署版本Vb。再Va正常运行的情况下部署版本Vb,之后引入小部分流量到Vb,观察Vb版本是否满足上线预期,如果满足则逐步用Vb替换Va。
监控#
ElasticSearch#
logstash#
Kibana#
调用链#
Zipkin