《微服务设计》读书笔记(一)

• 什么是微服务?

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

1) 协同:服务之间通过进程间通信的方式进行调用,服务之间通过api通信。一个进程会暴露几个api。

2) 很小,专注于做好一件事。一件事:内聚,业务的边界即服务的边界。很小,如何算小?时间两周内能完成更换,能很好地和团队结构相匹配

3) 自治:可以独立地部署在PaaS平台上,也可以作为一个操作系统的进程存在

• 微服务有何好处?

a. 技术异构性:不同的团队可以选择最适合自己的编程语言及数据存储机制

b. 弹性:舱壁,系统里的一个组件不可用了,其它的组件还可以继续工作

c. 扩展:针对需要扩展的微服务进行扩展

d. 简化部署:各个服务的部署是独立的,可以更快地针对特定部分的代码进行部署

e. 与组织结构相匹配:避免出现大的代码库,从而获得理想的团队大小和生产力

f. 可组合性:服务的可重用性

g. 对可替代性的优化:对几百行代码的微服务可以不带任何感情地删除、优化

• 微服务有何要求?

a. 分布式对部署、测试、监控方面的要求

b. 分布式事务

c. CAP相关的问题:分布式数据如何保持一致性

• 微服务与面向服务架构的关系

a. 面向服务的架构要考虑的问题: 通信协议(例如SOAP),第三方中间件如何选择,服务粒度如何划分

b. 微服务式面向服务的架构的一种特定方法

• 其它分解技术

a. 共享库:适用于执行一些公共任务,服务之间可以并且应该使用第三方库来重用

问题:1)无法选择异构的技术(这个不对吧?比如Java的应用可以调用c++写的库)2)失去独立地对系统一部分进行扩展的能力;3) 如果不是动态链接库,每次库更新时,系统都要重新启动或部署;

b. 模块:OSGI(Open Source Gateway Initiative)和Erlang。osgi带来的复杂度远远大于好处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容