在微服务化架构中, 软件项目被拆分红多个自治的服务, 服务之间经过网络协议进行调用, 一般使用透明的 RPC 远程调用.数据库
在 Java 领域, 每一个服务上线后, 对外输出的接口为一个 jar 包. 在微服务领域, jar 包被分为一方库、二方库、三方库.服务器
Java 微服务项目的层级结构通常为: 服务导出层、接口层和逻辑实现层, 以下图.网络
其中, 每一个层级的职责和最终的表现形式以下:架构
Java 平台下微服务实现层的架构图:并发
本地服务层经过 DAO 层与数据库进行交互. 这里使用了数据库事务, 保证了数据存取的强一致性, 业务流程层经过组合本地服务和外部服务来完成业务逻辑的实现, 因为有远程服务的依赖, 所以只能保证数据的最终一致性.微服务
这里有一个反模式, 切记永远不要在本地事务终调用远程服务, 在这种场景下若是远程服务出现了问题, 则会拖长事务, 致使应用服务器占用太多的数据库链接, 让服务器负载迅速攀升, 在严重状况下会压垮数据库. 顺便说一下, 虽然咱们要竭力避免这种场景的发生, 可是数据库也应该有负载熔断机制.spa
Java 平台下微服务实现层的反模式架构blog