我也来谈微服务(一)

来源:互联网 发布:模拟学生选课java代码 编辑:程序博客网 时间:2024/06/05 18:56

微服务这个理念已经不能算新了,最近这两年在互联网行业一直被广泛应用,之前说的微信就是基于微服务的架构设计的,那么是什么是微服务呢?
在说微服务之前,还是说一下一些相关的基本概念。

微服务本质

服务作为组件,每个组件可以独立部署,每个组件也可以有自己的编程语言;围绕业务组织团队,正如康威定律,一个组织的设计成果,其结构往往对应于这个组织中沟通和组织结构;基于产品构建,更倾向让团队去负责整个服务的生命周期,从服务的分析、开发、测试、部署、运维。微服务内每个业务数据是独立的,服务通过接口调用。

微服务与SOA

早在1996年,Gartner就提出了面向服务架构(SOA),SOA阐述了“对于复杂的IT系统,应按照不同的、可重用的粒度划分,将功能相关的一组功能提供者组织在一起为消费者提供服务”,其目的是解决企业内部不同IT资源之间无法访问导致的问题。
由于SOA本身的广义性以及抽形象,所以很长时间内业内也没有达成具体的共识,直到2000年,ESB、webservice、SOAP等这些技术的出现,才使得SOA建建落地。实际上微服务不是一个全新的概览,仔细分析SOA的概念就会发现他和今天微服务的思想几乎一致,我这这里借用thoughworks的一个叫法SOA2。那么为什么要整出微服务这个概念,这并不是哪些大牛闲的蛋疼玩的文字游戏,它们之前还是有些区别,过去十年互联网飞速发展,以及敏捷开发、CI/CD、devops、云计算等技术深入人心,服务架构的开发、测试、部署和监控等相比传统的SOA以及大相径庭,主要区别是
1. SOA是企业级,自定向下开展实施而微服务是团队级别,自低向上开展,在构建微服务的架构的时候,通常把底层各种能力封装成一个一个细粒度的服务,自低向上,编排服务。
2. SOA服务由多个子系统组成,粒度大,一个API包含诸多功能,调用一次接口解决很多问题,包含多个操作,而微服务是一个系统拆成多个服务,粒度细,每个接口功能单一。
3. SOA是企业服务总线,集中式的服务架构,有一个服务注册中心,每个服务都有一个ID;而微服务则是松散服务架构,无集中总线,当通常也会有一个服务的注册中心,作为服务发现。
4. SOA集成方式复杂,仍然记得几年前做的SOA服务集成,通过SOAP接口,每次都要花费很长时间看接口文档,复杂的xml,集成很复杂;而微服务通常是restful的接口通过http和json的方式就可以,简单很多。
5. SOA单块架构系统,相互依赖,部署复杂,整个系统的上线通常是费时,而微服务可以单独部署,服务独立,这样在企业升级上线devops更加容易实现。

微服务的问题

微服务不是银弹,不是万能的,它也有自己的问题:性能降低,相比于单体架构,服务之前通过rpc或者rest方式,跨网络互相访问,肯定会加大时延;可靠性也会降低,由于分布式部署,网络故障因素增加,服务个数增多导致更多的单点;数据一致困难了,在分布式系统中,由于分布式事务需要跨越多个节点来保证数据一致性,更加困难;系统定位问题更加复杂,调试也更困难。

微服务与容器

通过上面的微服务的问题,可以知道微服务其实虽然降低每个服务复杂性,却增加了整个系统的复杂性,所以为了维护这些麻烦的小粒度的服务,就需要一些管理平台。每一个服务可以打包到单独一个容器里面,再通过容器编排,编排服务。

原创粉丝点击