内容简介
1 一种解决方法
微服务的演变
整体式架构概述
整体式架构的局限性与它的微服务解决方案的对比
一维的可扩展性
在出故障时回滚版本
采用新技术时的问题
与敏捷实践的契合
减轻开发工作量——可以做得更好
微服务的构建管道
使用诸如Docker的容器部署
容器
Docker
Docker的架构
Docker容器
部署
小结
2 设置开发环境
Spring Boot配置
Spring Boot概述
把Spring Boot添加至REST示例
添加一个嵌入式Jetty服务器
示例REST程序
编写REST控制器类
@RestController
@RequestMapping
@RequestParam
@PathVariable
制作一个示例REST可执行应用程序
设置应用程序构建
运行Maven工具
用Java命令执行
使用Postman Chrome扩展测试REST API
更多的正向测试场景
反向的测试场景
NetBeans IDE安装和设置
参考资料
小结
3 领域驱动设计
领域驱动设计基本原理
组成部分
普遍存在的语言
多层架构
表示层
应用程序层
领域层
基础架构层
领域驱动设计的工件
实体
值对象
服务
聚合
存储库
工厂
模块
战略设计和原则
有界上下文
持续集成
上下文映射
共享内核模式
客户和供应商模式
顺从者模式
反腐层
独立方法
开放主机服务
精馏
示例领域服务
实体的实现
存储库的实现
服务的实现
小结
4 实现微服务
OTRS概述
开发和实现微服务
餐馆微服务
控制器类
服务类
存储库类
实体类
预订和用户服务
注册和发现服务(Eureka服务)
执行
测试
参考资料
小结
5 部署和测试
使用Netflix OSS的微服务架构概述
负载均衡
客户端的负载均衡
服务器端的负载均衡
电路断路器与监控
使用Hystrix的回退方法
监控
设置Hystrix仪表板
设置Turbine
使用容器部署微服务
安装和配置
具有4 GB内存的Docker机器
使用Maven构建Docker映像
使用Maven运行Docker
使用Docker执行集成测试
把映像推送到注册表
管理Docker容器
参考资料
小结
6 实现微服务的安全性
启用安全套接字层
身份验证和授权
OAuth 2.0
OAuth的用法
OAuth 2.0规范——简明详细信息
OAuth 2.0角色
OAuth 2.0客户端注册
OAuth 2.0协议端点
OAuth 2.0授权类型
使用Spring Security的OAuth实现
授权码许可
隐式许可
资源所有者密码凭据许可
客户端凭据许可
参考资料
小结
7 利用微服务Web应用程序来使用服务
AngularJS框架概述
MVC
MVVM
模块
提供程序和服务
作用域
控制器
过滤器
指令
UI-Router
OTRS功能的开发
主页/餐馆列表页
index.html
app.js
restaurants.js
restaurants.html
搜索餐馆
餐馆详细信息与预订选项
restaurant.html
登录页面
login.html
login.js
预订确认
设置web应用程序
小结
8 最佳做法和一般原则
概述和心态
最佳做法和原则
Nanoservice(不推荐)、规模和整体性
持续集成和部署
系统/端到端测试自动化
自我监控和记录
每个微服务都使用独立的数据存储区
事务边界
微服务框架和工具
Netflix开放源码软件(OSS)
构建——Nebula
部署和交付——Spinnaker与Aminator
服务注册和发现——Eureka
服务沟通——Ribbon
电路断路器——Hystrix
边缘(代理)服务器——Zuul
业务监控——Atlas
可靠性监控服务——Simian Army
AWS资源监控——Edda
主机性能监控——Vector
分布式配置管理——Archaius
Apache Mesos调度器——Fenzo
成本和云利用率——Ice
其他安全工具——Scumblr和FI DO
参考资料
小结
9 故障排除指南
日志记录和ELK环境
简要概述
Elasticsearcb
Logstash
Kibana
ELK环境安装
安装Elasticsearch
安装Logstash
安装Kibana
服务调用关联ID的使用
让我们看看怎样解决这个问题
依赖项和版本
循环依赖关系及其影响
设计系统时需要分析它
维护不同版本
让我们了解更多
参考资料
小结