- https://segmentfault.com/a/1190000009329474
- 我们项目的实践:后端spring cloud微服务 api-gateway统一对外暴露接口;前端angular+node
- 交互形式:http restful
- 开发模式:完全分离 接口文档交互
- spring cloud
- 阿里的Dubbo
- 常见的rpc框架: thrift、grpc、dubbo
- https://liuzhengyang.github.io/2016/12/16/rpc-principle/
- 通信模块
- 编解码模块
- 客户端 服务端
- 没用过
- 又是一个哲学问题,哈哈
- https://www.zhihu.com/question/27785028
- URL定位资源,用http动词(get post等)描述操作
- url设计时,原则上不使用动词,比如获取人员信息接口,/getPerson/1是不正确的,而应该用/person/1
- http动词来实现资源的 增查改删:
- GET: 获取资源
- POST; 新增资源
- PUT: 更新资源
- DELETE: 删除资源
- client与server之间传递资源的某种表现形式,如xml或json,jpg等
- 多次调用,不会影响到资源的变化,我们认为它幂等。
- 幂等性指的是作用于结果而非资源本身。例如,这个HTTP GET方法可能会每次得到不同的返回内容,但并不影响资源。
- GET PUT 多次调用和一次调用结果相同
- C=一致性 A=可用性 P=分区容忍性: CAP理论告诉我们,一个分布式系统不可能满足一致性,可用性和分区容错性这三个需求,最多只能同时满足两个。
- Base理论:Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的简写
- 强一致性
- 最终一致性
- 消息队列
- 保证exactly once
- https://juejin.im/post/592f87feb123db0064e5ef7c
- 单体-->SOA-->微服务
- 微服务是SOA发展出来的产物,它是一种比较现代化的细粒度的SOA实现方式
- 关于服务的尺寸,在实际情况中往往是一个服务应该能够代表「实际业务场景中的一块不可分割或不易分割的业务实体」
- 业务为主
- 首先要划分好业务的边界
- 单一职责
- 松耦合 独立部署 独立进程
- 服务之间轻量级的通信机制 RPC MQ http
- spring cloud sleuth + zipkin就是来解决这个问题的: http://www.ityouknow.com/springcloud/2018/02/02/spring-cloud-sleuth-zipkin.html
- 助记词:trace span
- 监控
- 预警
- 通知
- 熔断