微服务是一种分布式系统架构,它建议我们将业务切分为更加细粒度的服务,并使每个服务的责任单一且可独立部署,服务内部高内聚,隐含内部细节,服务之间低耦合,彼此互相隔离。
传统应用架构遇到的问题:
- 系统资源浪费
- 部署效率太低
- 技术选型单一
微服务需要满足的要求:
- 根据业务模块划分服务种类
- 每个服务可独立部署且互相隔离
- 通过轻量级API调用服务
- 服务需要保证良好的高可用性
交付流程:
- 设计阶段:拆分服务,设计API接口,给出API文档
- 开发阶段:服务端实现API接口;前端模拟API开发Web
- 测试阶段:部署到测试环境后,QA测试;产品进行功能验收
- 部署阶段:运维部署到预生产环境,QA进行冒烟测试;确认后部署到正式环境
开发规范:
- Git Flow的使用
特点与挑战:
- 特点
- 微小度颗粒
- 责任单一性
- 运行隔离性
- 管理自动化
- 挑战
- 运维要求高
- 分布式复杂性
- 部署依赖较强
- 通信成本较高
微服务架构图
微服务技术选型
- 使用JenKins部署服务
- 使用Spring Boot开发服务
- 使用Docker封装服务
- 使用ZooKeeper注册服务
- 使用Node.js调用服务
其他技术选型:
- Netflix: http://netflix.github.io/
- Spring Cloud: 在Spring Boot的基础上封装了Netflix相关组件
- JBoss的WildFly Swarm: http://wildfly-swarm.io/
- J2EE官方的KumuluzEE: http://ee.kumuluz.com/
- Dropwizard: http://www.dropwizard.io/
自动化发布平台
(1)开发人员将源码提交到代码仓库系统GitLab中。
(2)持续集成系统Jenkins定期会从GitLab上拉取指定项目的源码。(也可以人工手动触发去拉取)
(3)在Jenkins上进行自动构建,并生成相关的Docker容器,形成相应的测试环境。
(4)测试人员在自己的测试环境下进行功能测试。