Atitit 微服务之道 attilax著
1. 什么是微服务架构? 1
1.1. 、微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现 2
1.2. 微服务与康威定律 2
1.3. 微服务的一些设计 断路器 幂等 版本管理 3
1.4. 章 康威定律和系统设计 161 3
2. 架构的历史 微服务发展历史 Web》soa》msa 4
3. 微服务的优点 4
3.1. 微服务最大特点 独立部署 4
3.2. 性能负担 5
3.3. 增强稳定性,独立部署 5
3.4. 协调人力资源,使用不同的擅长的技术来实现不同的模块 5
3.5. 拆分,有利于开发人员项目规模的轻量化,提升开发速度 5
4. 微服务的接口 cli 与rest接口 5
5. 如何实施微服务 5
5.1. 章 分解单块系统 66 6
6. 其他 6
6.1. 第2 章 演化式架构师 11 7
6.2. 章 集成 32 与第三方软件集成 6 7
6.3. 第 11章 微服务与持续交付 ............ 131 7
7. 参考资料 8
7.1. ATITIT 三种架构 集中,分布式,微服务架构.docx 9
7.2. 《微服务设计》([英] 纽曼(Sam Newman)) 9
7.3. 从源头入手,一分钟秒懂为什么要搞微服务架构? - 推酷.mhtml 9
7.4. 微服务实战(一):微服务架构的优势与不足_知识库_博客园.html 9
7.5. 微服务设计-读书笔记 - 简书.html 9
7.6. 微服务与康威定律 - 推酷.html 9
7.7. Atitit 提示稳定性 ---------msa微服务部署计算页码服务 v1.1 .docx 9
7.8. 微服务架构与实践 9
Martin Fowler认为,微服务架构是一种独立部署的软件应用设计方式。这种架构方式没有准确的定义,但是在业务能力、自动部署、端对端的整合、对语言及数据的分散控制上有着共性。Martin Fowler曾在文章中详细阐述了微服务的特征,资深架构师顾伟在分享中总结了其中最重要的三点:轻量可复用、安全可伸缩、失败设计。很多企业在发展中遇到了瓶颈,CIO们纠结如何让企业的架构更有弹性、并节约成本的增加弹性、如何开放服务数据、并规避开放之后的安全问题。而微服务架构正能够满足这些需求。但是,微服务架构也为企业带来一些挑战:微服务的粒度更细,导致了更多的进程;微服务架构整合了多种服务形态,却需要提供统一的接口;开放服务之后,业务量不稳定,增加了CPU和内存的负担。
微服务架构就能够很好地解决这个问题。微服务架构自 2010年开始逐渐被大家熟知,通过对传统单块应用进行服务化切分,把一个大而复杂的问题化解为多个小而简单的问题,服务之间通过契约来约定依赖,做到服务独立发布和演进。今天,微服务架构已经被广泛运用在像 Google、 Facebook这样的大型互联网公司,为他们的快速交付和持续创新提供软件架构支撑。本书中有大量微服务架构实战经验的总结,不仅仅有应用架构设计的内容,还涵盖了微服务大背景下应用测试、发布、日志、监控等方面,让读者可以全面应对微服务架构需求。
Melvin Conway于1968年发表的论文《 How Do Committees Invent 》指出:系统设计的结构必定复制设计该系统的组织的沟通结构。这一论断被称为“康威定律”。在《Exploring the Duality Between Product and Organizational Architectures %201309%E2%80%93%201324_c5c2350e-013c-4065-a2f9-d95eb32177d5.pdf)》一文中,作者发现紧密耦合的组织(例如典型的商业产品公司,所有员工在同一地点工作,具有高度一致的愿景与目标)开发的软件倾向于较少模块化,而松散耦合的组织(例如分布式的开源社区)开发的软件则倾向于更加模块化、耦合较少。
2)断路器
使用断路器,当请求下游服务发生一定数量的失败后,短路器打开,接下来的请求快速失败。一断时间后,查看下游服务是否已服务,重置断路器。
3)舱壁
未每个下游服务建立单独的连接池。超时和断路器资源受限时释放资源,舱壁第一时间确保它不成为限制。还有一个拒绝请求的舱壁,用以避免资源饱和,称之为减载。
4)隔离
当下游服务离线,上游服务不受影响。设置成为服务间隔离。
5、幂等
幂等操作,多次执行所产生的影响,均与一次执行影响相同。可以把某些特定业务操作设计成幂等的,比如客户下单送积分。
4、版本管理
1)尽可能推迟破坏性修改
宽进严出的原则
3)不同的接口版本共存
最好共存两个版本
Web》soa》msa
微服务特点的描述。
大概从以下四个方面来说:
· 根据业务模块划分服务种类。
· 每个服务可以独立部署并且互相隔离。
· 通过轻量的 API 调用服务。
· 服务需要保证良好的高可用性。
关于轻量 API, 微服务本身是推荐使用轻量的通讯协议和简单的数据结构,实际上,实施环节通常采用的都是 http+json 的方式。
要搞微服务了,有啥建议么?通过我们不断的摸索和总结,要做好微服务,就要做好一定的准备工作。
从五个具体的方面来谈:
业务拆分,体现在设计环节: 在设计的时候,要有足够的判断力来合理的规划服务之间的界限。
服务治理,底层技术的支持: 首先要选一款适合自己实际情况的分布式服务基础框架,对于服务的发现、治理、熔断、降级,都要做好相应的技术准备。
自动测试,一定要自动化。 微服务一个明显的表象就是随着服务的增多,如果继续沿用传统的测试模式就会遇到瓶颈,为了保证高效的迭代,尽量做到更多的环节实现自动化。
自动运维 : 微服务拆分之后,每个服务都可以独立部署,进而言之应该是随时随地可以升级。尤其当互联网发展到今天,业务要保持对市场变化的一个高效响应,自动化运维就是提升交付速度的一个重要环节。
监控: 包括硬件环境、服务状态、系统健康度、接口调用情况、异常的实时告警以及潜在问题的事先预警等等。监控在实施微服务过程中会重要到什么程度呢?一句话:没准备好监控,就不要搞微服务。
Line 301: 第1 章 微服务 1
第4
Line 434: 第6 章 部署 86
Line 458: 第7 章 测试 110
Line 487: 第8 章 监控 131
Line 501: 第9 章 安全 143
Line 341: 第3 章 如何建模服务 24
第5
Line 396: 4.15 与第三方软件集成 61
第 12章 微
第10
Line 555: 第11 章 规模化微服务 171
Line 606: 第12 章 总结 204
第 1部分 基础篇
第 1章 单块架构及其面临的挑战 ............................................. 3
第 2章 微服务架构综述 .................... 13
第 2部分 实践篇
第 3章 构建**个服务 .................... 41
第 4章 Hello World API .................... 45
第 5章 构建 Docker映像 ................. 61
第 6章 部署 Docker映像 ................. 71
第 7章 持续交付流水线 .................... 85
第 8章 日志聚合 .............................. 97
第 9章 监控与告警 ......................... 105
第 10章 功能迭代 .......................... 115
第 3部分 进阶篇