微服务的特点:
单一职责:微服务中每一个服务都对应唯一的业务能 力,做到单一职责
微:微服务的服务拆分粒度很小,例如一个用户管理 就可以作为一个服务。每个服务虽小,但“五脏俱 全” 。
面向服务:面向服务是说每个服务都要对外暴露Rest 风格服务接口API。并不关心服务的技术实现,做到 与平台和语言无关,也不限定用什么技术实现,只要 提供Rest的接口即可。
自治:自治是说服务间互相独立,互不干扰
团队独立:每个服务都是一个独立的开发团队,人 数不能过多
技术独立:因为是面向服务,提供Rest接口,使用 什么技术没有别人干涉
前后端分离:采用前后端分离开发,提供统一Rest 接口,后端不用再为PC、移动段开发不同接口
数据库分离:每个服务都使用自己的数据源
部署独立,服务间虽然有调用,但要做到服务重启 不影响其它服务。有利于持续集成和持续交付。每 个服务都是独立的组件,可复用,可替换,降低耦 合,易维护
服务的调用方式
RPC:Remote Produce Call远程过程调用,类似的 还有RMI。自定义数据格式,基于原生TCP通信,速 度快,效率高。早期的webservice,现在热门的 dubbo,都是RPC的典型代表
Http:http其实是一种网络传输协议,基于TCP,规 定了数据传输的格式。现在客户端浏览器与服务端通 信基本都是采用Http协议,也可以用来进行远程服务 调用。缺点是消息封装臃肿,优势是对服务的提供和 调用方没有任何技术限定,自由灵活,更符合微服务理念。
如果你们公司全部采用Java技术栈,那么使用Dubbo 作为微服务架构是一个不错的选择。
如果公司的技术栈多样化,而且你更青睐Spring家 族,那么SpringCloud搭建微服务是不二之选。在我 们的项目中,我们会选择SpringCloud套件,因此我 们会使用Http方式来实现服务间调用。
Http客户端工具
HttpClient
OKHttp
URLConnection
个人笔记