第一章 微服务
什么是微服务
很小,专注于做好一件事
单一职责原则:把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离开来。
怎样确定代码库足够小strong>
- 如果你不再感觉你的代码库过大,可能它就足够小了。
- 代码库的大小要与团队的大小相匹配
自治性
一个微服务就是一个独立的实体。它可以独立地部署在PaaS(Platform as a Service,平台即服务)上,也可以作为一个操作系统的进程存在。
要尽量避免把多个服务部署到同一台机器上。
特性:
- 服务之间均通过 络调用进行通信,从而加强了服务之间的隔离性,避免紧耦合
- 服务可以彼此间独立进行修改,并且某一个服务的部署不应该引起该服务消费方的变动
- 服务会暴露出API,然后服务之间通过这些API进行通信
主要好处
技术异构性
在一个由多服务构成的系统,可以在不同的服务中使用最合适该服务的技术。
弹性
在单块系统中,如果服务不可用,那么所有的功能都会不可用,这可以通过将同样的实例运行在不同的机器上来降低功能完全不可用的概率。但微服务系统本身就可以解决这个问题。
扩展
单块服务只能作为一个整体进行扩展,而使用微服务,则可以只对需要扩展的服务进行扩展,这样就可以把那些不需要扩展的服务运行在更小的、性能稍差的硬件上。

简化部署
微服务中,可以服务进行独立部署。
与组织结果相匹配
不同大小的服务由合适规模的团队负责。
可组合性
服务(接口)的重用,而不仅仅是代码的重用!
比如我在手机上使用微服务开发了一套接口用来定位,那么这套接口也可以用在智能手表上的定位功能。
对可替代的优化
使用微服务可以在需要的时候轻易地重写服务,或者删除不再使用的服务。
面向服务的架构
SOA(Service-Oriented Architecture,面向服务的架构)是一种设计方法,其中包括多个服务,而服务之间通过配合最终会提供一系列功能。一个服务通常以独立的形式存在于操作系统进程中。服务之间通过 络调用,而非采用进程内调用的方式进行通信。
实施SOA会遇到一些问题:
- 通信协议如何选择
- 第三方中间件如何选择
- 服务粒度如何确定
其它分解技术
共享库
缺点:
- 无法使用异构的技术。一般来讲,这些库只能在同一种语言中,或者至少在同一个平台上使用。
- 失去了独立地对系统某一个部分进行扩展的能力。
- 除非使用的是动态链接库,否则每当库有更新的时候,都需要重新部署整个进程,以至于无法独立地部署变更。
- 可能会成为一个耦合点
服务之间可以并应该大量使用第三方库来重用公共代码,但有时候效果不太好。
模块
OSGI(Open Source Gateway Initiative,开放服务 关协议),一个与具体技术相关地模块分解技术。
OSGI是什么:
OSGi简介
OSGi技术是指一系列用于定义Java动态化组件系统的标准。这些标准通过为大型分布式系统以及嵌入式系统提供一种模块化架构减少了软件的复杂度。
没有银弹
微服务不是一个通用的方法。
文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树服务 格(istio)ServiceMesh介绍8967 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!