首先我们尝试用一段话解释一下微服务的概念,微服务区别于讲所有的服务,数据库访问等业务及中间层代码打在一个jar或者war包内的all in one的体系结构,以业务服务及领域模型的组合为单元拆分出可独立部署,独立运行,独立风险控制的系统组件应用的结合体。微服务拥有业务服务(可以理解为spring mvc中的service)及领域模型(可以理解为spring mvc中的model)为闭环,其本身的微服务系统所提供的服务业务边界清晰,生命周期独立且可自运行,可隔离,可追踪。
所有的服务融合在一个业务程序内,采用all in one的打包方式组成一个jar或者一个war包,并且访问同一个mysql数据库,简单粗糙,服务之间调用关系由于是在一个代码包内,可以随意互相应用,业务关系不清晰,而且部署在一起,一旦一个服务或者对应的数据库产生问题,则全盘故障。
于是我们把系统做了微服务化的拆分,以服务为单位将其变成一个分布式的系统。
网关接入系统负责接收对应的web请求,转发给对应后面的业务服务系统处理对应的业务并接收返回转发给前端。
后面的业务服务系统各司其职,每个系统只负责自己业务范围内的职责,比如商品系统仅服务商品相关的服务,创建,更新,查询,
上下架等整个的生命周期并被购物车系统依赖,服务系统之间的逻辑关系清晰,且不同系统间只能通过对方提供的接口做访问,管理方便,
每个系统拥有自己独立部署服务器,拥有自己的存储数据库,故障可隔离,配合日志,消息,监控,配置中心等分部署微服务下的配合组件做到一个可监控,可隔离,又可通信的服务体系。
微服务的落地技术有很多,但总体来讲还是可以用几个简单的点去做分类,微服务的框架目前开源的用的最多的是spring cloud,另外有人肯定会说为什么不是dubbo,那其实dubbo仅仅是解决了微服务技术中的一部分问题,例如服务通信,负载均衡,服务注册发现等,但是他没有解决降级限流,熔断控制,服务路由等问题,还需要自己实现或者结合一些第三方组件,因此spring cloud是真正意义上闭环完整的实现了所有微服务的落地功能技术。
有了spring cloud这一整套的服务治理方案,还缺少服务部署工具,现在流行的微服务部署方式是将服务打成docker镜像,在k8s上面部署,当然还可以集成jenkins,实现DevOps的整体技术方案,能够快速的实现服务上线,异常回滚以及灰度发布等需求,从而实现一整套的微服务自动化开发运维服务体系。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有