开发指南121-微服务的弹性伸缩
平台的后台服务表现形式就是各种各样的微服务。微服务可以部署在不同的机器上。单一服务的伸缩很简单:
部署在不同机器上,直接启动关闭即可。
部署在同一机器上,可以复制为多个不同目录,其中jar包,启动文件是完全一样的。例如搞4个服务:
其中不同的仅仅是bootstrap.yml文件,其中最关键的不同是:
事实上,不用这么多目录,只用一个目录是可以,只是要做多个批处理文件:
就是同一目录下搞多个配置文件 多个启动文件。这样的好处是升级时,只复制一次jar包即可。缺点是日志文件会集中到一个目录一个文件了。(当然日志里会有标识,区分那个服务产生的内容)
上面这个方式不推荐,推荐前面说的多目录方式。
服务之间的弹性收缩如何处理?涉及到服务的合并和分割。核心关键在打包和配置。
平台的服务程序的项目工程其实就是个架子,其中的pom.xml定义了本服务打包那些control,从而实现服务包的合并和分割。
服务包划定好后,最终分割体现在网关路由定义上:
例如对小型项目,平台会把QLM-Resource-Service、QLM-Usermanage-Service、QLM-HR-Service、zCMS-Service组合成QLM-System-Service,对应路由就是:
就是把各自的访问集中到QLM-System-Service。相反分散的情况是:
核心原理就是通过路由路径分配到具体的服务。