我认为微服务,应该有如下特征:1、专注某个领域的服务提供 2、独立JVM隔离 3、独立资源管理 4、可拔插
1、微服务实现
其实很简单,用dubbo就可以轻易实现不同service project 独立部署,实现高可用,高性能和高扩展性的API。其实这个实现方式太多了,没什么难度,难就难在如何实现微服务分布后的分布事务。这个是很多人避而不谈的,下面我们着重探讨一下。
2、分布事务实现
先看看下图,主要表述了以下几个东西:
1、web project(controller类)通过jetty容器分布部署,通过rpc(dubbo实现)方式远程调用service api。
2、微服务service api通过dubbo进行集群。
3、微服务service api有自己独立的数据库资源,独立管理。如果是某些业务涉及垮库写操作,可以通过混合事务实现。
说到事务,有必要对事务进行分类,以便分而治之。以比较典型的电商业务为例:
1)强一致性事务
场景:下订单,扣库存,必须实时保持一致。
对于要求较高的实时性业务,只要保证垮库操作在同一个虚拟机内完成,即可最大限度的保证强