1.1 场景
自己做java时间不长,项目中一直采用的是git协同开发的模式,这种方式一直延用了很久,自己之前一直都听说过微服务、Dubbo这类的分布式框架,但是自己一直理解的是项目要非常大,才需要采用。
这段时间,和我一起开发的同事,经常发生git冲突,而且处理冲突比较浪费时间。这时候,我们想到了中型以上的项目就采用微服务吧,因为这样可以让每个人员去专注做某个模块,减少冲突的可能,而且可以使项目尽可能的解耦合/插件化,实现多处复用。
1.2 概念
微服务其实本质上是一种软件架构的风格
是将复杂的应用分割成多个独立的模块,每个模块专注自己的功能,并且向外提供服务,模块之间可以相互通信,从而组成完整的服务。
特点
1.内存表现为相互隔离,互不干扰
2.模块之间通过RPC/http协议实现互相通信
1.3 微服务产生背景
在垂直应用里,对于访问量过大,负载出现问题时,为了解决单台服务器不能支撑的问题,需要将垂直应用分别部署到多台服务器,使用负载均衡器来解决并发量的问题。
但是每台服务器都是一样的应用,我们无法根据不同模块的并发不同,来制定针对性的负载优化。
例如用户中心使用频率只有1~2%的使用率,但是商品展示模块使用率却达到了70%,这时候其实我们只需要优化商品模块就可以了。很明显传统方式无法满足,这时候应用模块化/插件化势在必行。
1.4如何实现一个简单的微服务
屏幕快照 2018-05-03 下午1.50.55.png流程
- 客户端发起调用请求
- 将调用的内容序列化后通过网络发给服务端
- 服务端接收到调用请求,执行具体服务并获得结果
- 将结果序列化后通过网络返回给客户端
网友评论