微服务简介

一、什么是微服务
1、什么是“微服务”
微服务架构的风格,就是将单一程序开发成一个微服务,每个微服务运行在自己的进程中,并使用轻量级机制通信,通常是HTTP RESTFUL API。这些服务围绕业务能力来划分构建的,并通过完全自动化部署机制来独立部署。这些服务可以使用不同的编程语言,以及不同数据存储技术,以保证低限度的集中式管理。----微服务发明人Martin Fowler
2、微服务通过HTTP来互相通信
服务与服务之间通过HTTP来互相通信,通信的数据格式一般用JSON(比xml更轻量易读)。
服务之间通过HTTP或者消息总线方式进行通信,这种方式也存在弊端,其通信机制是不可靠的,虽然成功率很高,但也有失败的时候。
3、微服务可以独立使用数据库
微服务本身是根据业务划分,根据每个业务不同,可以划分不同的数据库,甚至可以选择关系型数据库和非关系型数据库,例如redis、MongDB等。
4、微服务的部署方式
微服务架构中,随着服务被拆分的越来越多,每个微服务又是一个独立的应用程序,单体架构方式部署会增加微服务部署的成本和运维的难度。目前使用自动化部署工具,例如开源组件Jenkins。
5、服务集中化管理
目前流行的微服务框架中,例如Spring Cloud采用Eureka来注册服务和发现服务,另外Zookeeper、Consul等都是非常优秀的服务集中化管理框架。
6、分布式架构
分布式系统是集群部署的,由很多计算机相互协作共同完成,它能够处理海量的用户请求。分布式系统通过网络协议来通信,所以分布式系统在空间上没有任何限制,可以是不同机房和不同地区。

微服务架构是分布式架构,分布式系统比单体系统更加复杂,主要体现在服务的独立性和服务相互调用的可靠性,以及分布式事务、全局锁、全局ID等,而单体系统不需要考虑这些复杂性。

另外,分布式系统的应用都是集群化部署,会给数据一致性带来困难。分布式系统中的服务通信依赖于网络,网络不好,必然会对分布式系统带来很大的影响。在分布式系统中,服务之间相互依赖,如果一个服务出现了故障或者网络延迟,在高并发的情况下,会导致线程阻塞,在很短的时间内该服务的线程资源会消耗殆尽,最终使得服务不可用。由于服务的相互依赖,可能会导致整个系统不可用,这就是“雪崩效应”。为了防止此类事件的发生,分布式系统必然要采取相应的措施,例如“熔断机制”。
7、熔断机制
为了防止“雪崩效应”事件的发生,分布式系统采用了熔断机制。在Spring Cloud构建的微服务系统中,采用了熔断器Hystrix组件的Circuit Breaker去做熔断。
当一个服务出现故障之后,请求失败次数超过设定的阀值之后,服务就会开启熔断器。此时服务不进行任何业务逻辑操作,执行快速失败返回,此时,调用方得到失败信息,服务本身不会因为堆积大量线程导致阻塞,相关的服务也不会联动出现故障。

熔断器还有另外一个机制,即自我修复的机制。当服务熔断后,经过一段时间,半打开熔断器。半打开的熔断器会检查一部分请求是否正常,其他请求执行快速失败。检查的请求如果相应成功,则判断服务正常了,就关闭熔断器,恢复服务。但如果继续失败,就仍然打开熔断器。这种自我熔断机制和自我修复机制在微服务架构中有着重要的意义,一方面,它使得程序更加健壮,另一方面,为开发和运维减少很多不必要的工作。

同时熔断组件也提供一系列的监控,监控服务是否可用、熔断器是否被打开、目前的吞吐量、网络延迟状态的监控等,从而更清晰的了解服务的状况。
8、服务的部署
微服务是核心;Docker是容器技术,是微服务最佳部署的容器;DevOps是一种部署手段或理念。
9、微服务和SOA的关系
微服务将复杂的业务组件化,实际也是一种面向服务思想的提现。对于微服务来说,它是SOA的一种实现,但是它比ESB实现的SOA更加轻便、便捷和简单。
10、微服务架构思考
根据业务的演变,服务的发展:LAMP单体架构----主从,读写分离、加缓存、加负载均衡服务器、应用程序集群化部署----分布式系统,例如微服务架构的系统
微服务架构中,三大难题,服务故障的传播性(熔断机制)、服务的划分(业务划分服务,领域驱动设计具有指导作用)、分布式事务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值