集成
编排 / 协同
请求/响应方式
RPC 远程过程调用
REST 表述性状态转移
我们很容易把数据库表的存储的数据直接暴露给消费者。如何避免这个问题?
解决方案就是先设计外部接口,等到外部接口稳定之后再实现微服务内部的数据持久化
版本号
https://semver.org/lang/zh-CN/
格式: MAJOR.MINOR.PATCH
MAJOR 改变表示其中包含向后不兼容的修改
MINOR 改变表示有新功能的增加,但是向后兼容的
PATCH 改变表示对已有功能的缺陷修复
概念
微服务就是一些协同工作的小而自治的服务
很小,专注做好一件事情
内聚性
把因相同原因而变化的东西聚合到一起,而把因不同原因而变化的东西分离开来
一个微服务可以在两周内重写
微服务架构是SOA(面向服务的架构)的一种特定方法
面对所有分布式系统需要面对的复杂性
主要好处
技术异构性
弹性
扩展
简化部署
与组织结构相匹配
可组合性
对可替代性的优化
部署
CI 持续集成
构建物
Java: JAR包 / WAR包
Ruby:gem
Python:egg
Node.js:NPM包
一个服务 一个代码库 一个CI
CD 持续交付
流水线
编译及快速测试 -> 耗时测试 -> 用户验收测试(UAT) -> 性能测试 -> 生产环境
多套环境
一个用来运行耗时测试
一个用来做UAT
一个用来做性能测试
一个用于生产环境
我们需要创建一个构建物作为候选发布版本,并使其沿着流水线向前移动,最终确认它能够被发布到生产环境
Docker
CoreOS是一个专门为Docker设计的操作系统,是经过剪裁的Linux OS
自动化