在系统开发中,一个系统服务通常有多个业务模块。通常存在一种情况,A业务使用率较高,为了缓解A业务的使用压力而再部署一个服务,显然是浪费系统资源的。就如同,公司中有多个部门,市场部,财务部,人力部等等,其中市场部压力较大,为了缓解市场部压力,而多开一家公司,显然是不合理的。
微服务的 微 主要体现在业务分离上,也许一个服务会占用较大内存,但是业务相对独立,每个服务负责相应的业务;就像我们常见的公司的组织架构一样,不同的部门来完成不同的任务,不同部门之间相互配合又相互独立。当某个部门压力较大,在多开个部门而不是多开个公司。
微服务应该具备的特点:
1.所有的服务都尽量保证无状态或者有状态的可以做状态转移(如session等数据,可以转移到redis集群中)。服务可以专注于本身业务处理,不必浪费资源进行状态处理。
2.业务的相对分离
3.使用API网关(尽量不要将微服务的各个服务暴露出去,以免造成安全问题)
4.服务间采用统一的通信模式(restful、Thrift等)
5.能够脱离开发语言,即不受制于特定的开发语言。两个服务可以是不用开发语言。
6.微服务中的各个服务尽量不要有强依赖(即不会因为某个服务的停止,而导致整个服务或者其他服务不可用)
7.具有易于实现HA的特质,即不存在单点故障,同时运行多个实例提供服务并实现了负载均衡
网友评论