微服务架构技术栈选型

  微服务框架主要有Dubbo和Spring Cloud,上文Dubbo服务框架和SpringCloud微服务框架的对比表中,Dubbo服务框架和SpringCloud微服务框架相同与差异之处,以及服务调用侵入性、社区社区成熟度和活跃度等,选择Spring Cloud 微服务框架作为微服务开发的基础框架。

微服务架构技术栈选型

  微服务运行在Docker容器中具备天然的优势,Docker 容器服务编排的领导者是Google 公司开发的Kubernetes。考虑到Spring Cloud和Kubernetes都具备服务注册发现、路由与负载均衡、配置管理等能力,在项目生产使用Spring Cloud 微服务框架的网关组件、调用链追踪组件、熔断组件这3个组件,其余使用Kubernetes提供的能力。

  基于Oracle、Weblogic等单体架构的项目,在进行微服务容器化改造时,为了能够实现快速开发迁移、方便部署运维、扩容简单等特性,技术栈选型主要涉及开发、编译、测试、部署、服务编排等。

  微服务架构技术栈选型分为运行技术栈和开发技术栈,运行技术栈位于左侧线框,开发技术栈位于右侧线框。Docker容器的系统逻辑架构主要分为展示层、网关鉴权层、微服务层、编排与调度层、存储与消息层。技术栈选型全景图如下图所示:

  技术栈选型全景图

  (1)展示层∶适配电脑端Web、手机端App、第三方调用API。

  (2)网关鉴权层使用Zuul作为API网关,对调用进行路由分发和权限校验,基于SpringSecurity、Auth2和JWT的认证鉴权技术。

  (3)微服务层分为前端微服务和后端微服务。前端微服务面向用户业务,为前端提供数据;后端微服务面向数据库、消息等组件,为前端微服务提供调用。

  (4)编排与调度层使用基于Rancher技术的Kubernetes编排管理集群Pod,使用Harbor做Docker的私有镜像仓库,使用OpenSSL对镜像仓库服务进行安全访问。

  (5)存储与消息层为了使系统在部署到生产环境中之后能稳定地运行,持久化层、消息、日志等组件采用独立部署。开发技术栈主要使用 GitLab 做代码管理、AngularJS 做前后端分离、Spring Boot+Spring Cloud+Mybatis 做微服务应用开发、Maven 做模块依赖和编译构建管理、Jekins 做持续开发集成部署的CI/CD管理、Sonar 做代码规范漏洞扫描等。

  微服务开发与运行的技术栈选型全景图,包含了目前微服务相关的主流技术,使用Spring Cloud微服务框架进行微服务开发,开发环境包括EUREKA、JDK8、Maven、Git、Zuul、Config、Hystrix、Zipkin等组件,在生产环境中不一定使用Spring Cloud微服务框架全套组件,可以根据实际生产环境结合微服务运行环境进行取舍。

原创文章,作者:lishengli,如若转载,请注明出处:http://www.lishengli.com/lee/404.html

发表回复

登录后才能评论