近日不务正业,读黄勇写的《轻量级微服务架构(上)》有感。
总体技术栈:
1、后端基于SpringBoot用java实现,核心原因在于boot引入了诸多简化spring的注解、实现了诸多自动化的识别与配置、内嵌了tomcat容器、引入了诸多监控组件、且打包成jar包;使得整个后端服务非常简化、轻量。
代码:https://github.com/weikuo0506/microservice-api.git
2、后端java负责将服务注册与暴露到zookeeper上。framework模块负责与zookeeper交互,创建node节点。
代码:https://github.com/weikuo0506/microservice-framework.git
3、用node.js来做服务网关,实现服务的自动发现;node.js是一个基于chrome v8引擎的js运行环境,使用了事件驱动和异步非阻塞IO,非常轻量且高效;另外node.js的npm包含了全球最多的开源生态系统,使用非常方便。node.js作为网关的核心作用是1)与zookeeper交互,寻址;2)作为http proxy实现反向代理。
代码:https://github.com/weikuo0506/gateway-nodejs.git
4、用docker封装后端服务的运行环境。借助docker maven plugin非常方便就能做到。
5、搭建本地docker registry,作为docker的局域网私有仓库。
6、搭建gitlab,作为本地代码托管私服。
7、借助jenkins,实现从gitlab 自动拉取代码,打包,build & push到私有docker registry。此处gitlab、jenkins都可能运行在docker中,涉及到docker间的通讯问题。
从上可知,代码的开发、打包、部署变得非常自动化,交付产物也由之前的”代码“,抽象提升到了更高的层次,即交付"docker镜像",即交付的是能够即可运行的完整服务。