一、微服务的概念:
微服务(Microservices)是一种软件架构风格,它是一种以业务功能为主的服务设计概念,每一个服务都具有自主运行的业务功能,对外开放不受语言限制的API(最常用的是HTTP),应用程序则是由一个或多个微服务组成。 ------来自维基百科
二、微服务的起源:
微服务的起源是由 Peter Rodgers 博士于 2005 年度云端运算博览会提出的微 Web 服务 (Micro-Web-Service) 开始。想法是将类别变成细粒服务。2014年Martin Fowler与James Lewis共同提出了微服务的概念,定义了微服务是由单一应用程序构成的小服务,自己拥有自己的行程与轻量化处理,服务依业务功能设计,以全自动的方式部署,与其他服务使用HTTP API通讯。同时服务会使用最小的规模的集中管理(例如Docker)能力,服务可以用不同的变成语言与数据库等元件协作。
三、微服务的设计理念:
微服务运用了以业务功能的设计理念,应用程序在设计时就能先以业务功能或流程先行分割,将各个业务功能都独立实作成一个能自主执行的个体服务,然后再利用相同的协定将所有应用程序需要的服务都组合起来,形成一个应用程序。若需要针对特定业务功能进行扩充时,只要对该业务的功能进行扩展就好,不需要整个应用程序都扩展,同时,由于微服务是以业务功能导向的协作,因此不会受到应用程序的干扰,微服务的管理员可以视运算资源的需要来配置微服务到不同的运算资源内,或是布建新的运算资源并将它配置进去。
微服务中每个服务都能够有自己的数据库
四、微服务的特点:
A : 4个典型特点
1.单个服务尽量专注一件事情,高内聚、低耦合;
2.进程隔离;
3.每个服务可以独立的开发、测试、构建、部署;
4.小且灵活;
B : 无与伦比的优点
1、交付周期:每个服务可以独立的开发、测试和交付,降低周期;
2、快速沟通:小团队开发,降低代码耦合度导致的沟通成本;业务按服务拆分,新人不需要了解整体架构,上手快;
3、定制化:可以根据市场需求,灵活多变的组合出新的业务场景;
4、隔离性:进程隔离方式,故障范围有效控制;
5、技术栈:可以根据需求按服务选择不同技术栈;
6、演进优化;
基于以上的优点:可以按照服务粒度进行演进优化;因为有了独立性,所以每个独立的服务完全可以由不同的团队来开发管理,开发者可以自由选择开发技术,提供API服务。这样我们就可以不再必须依赖于原有的技术框架来完成业务,可以针对单个服务实现最新的技术升级,甚至重写单个服务。
五、微服务架构的特性:
每个服务都容易被取代。
服务是以能力来组织的,例如使用者界面、前端、推荐系统、账单或是物流等。
由于功能被拆成多个服务,因此可以由不同的编程语言、数据库实作。
架构是对称而非分层(即生产者与消费者的关系)。
一个微服务架构:适用于具持续交付 (Continuous Delivery) 的软件开发流程。与服务导向架构(Service-Oriented Architecture) 不同,后者是整合各种业务的应用程序,但微服务只属于一个应用程序。
六、微服务的不足:
1、微服务的拆分原则是个问题,拆分到多细粒度的服务可以恰到好处,这个是比较困难的。
2、微服务应用是分布式系统,并且还要求每个独立的服务都有自己独立的数据库,这样会带来复杂性,加上分布式本身就有点复杂。
微服务的使用场景:因为微服务随之而来的复杂性,这些复杂性有部署的复杂,依赖的复杂,扩展和监控等,因为任何新事物如果带来一个问题,那么为了解决一个问题的解决方案可能是另一种新的技术。这样不断叠加的复杂性,会让微服务架构看起来相当的庞杂和复杂。
七、微服务架构的核心思想
微服务架构的核心思想是,一个应用是由多个小的、相互独立的、微服务组成,这些服务运行在自己的进程中,开发和发布都没有依赖。不同服务通过一些轻量级交互机制来通信,例如 RPC、HTTP 等,服务可独立扩展伸缩,每个服务定义了明确的边界,不同的服务甚至可以采用不同的编程语言来实现,由独立的团队来维护。简单的来说,一个系统的不同模块转变成不同的服务!而且服务可以使用不同的技术加以实现!
作者:书中乌鸦不是鸟
链接:https://www.jianshu.com/p/611903f96ea2