Software Architecture & Engineering
55 篇笔记
- 2.3 OAuthhistorical
1. OAuth是什么 - 一种授权协议 - 用来授权第三方应用,获取用户数据。 2. 为什么需要OAuth - 以使用微博登录简书,简书需要用到微博的头像昵称 - 传统的作法是输入微博的用户名+密码获取,这种有几个问题 - 微博用户名密码暴露给了简书,可能会泄露 - 只想获取微博头像昵称,但是简书
- 2.4 如何设计配置中心historical
1. 什么是配置中心 用来统一管理项目中所有配置的系统 2. 为什么需要配置中心 传统的配置是放在一个配置文件中,跟代码一起发布,这种每次修改了配置都要重新发布服务 而配置中心则是把配置存储在独立的配置服务器上,用户通过管理界面配置和调整服务配置,具体服务通过定期拉(Scheduled Pull)的
- 2.5 如何设计负载均衡组件historical
1. 什么是负载均衡 - 将请求(工作负载)平均的打到到多个机器上以提高性能和可用性 2. 为什么需要负载均衡 - 通过机器冗余提高可用性 - 便于横向扩展以提高性能和吞吐量 - 垂直扩展指更换性能更强劲的机器,价格自然更高,性价比不咋地 3. 如何实现负载均衡组件 3.1. 负载均衡算法有哪些 负
- 2.6 如何设计注册中心historical
1. 什么是注册中心 - 记录了 服务名<- IP地址+Port 的映射关系,本质上和DNS没区别 - 2. 为什么需要注册中心 没有注册中心那么A调用B只能写死IP地址,不灵活 3. 如何实现注册中心 3.1. 服务端 3.1.1. 服务注册表 2. 中心化、强一致存储中间件。比如Zookeepe
- 2.7 如何设计API网关historical
1. 什么是API网关 - 网关=路由器+过滤器 - 路由器:外部请求的入口(单点入口)。一般微服务都是部署在内网,所有外部请求都先经过网关,由网关转发到后端服务器(服务路由)。 - 过滤器:限流熔断、安全认证、日志监控等 2. 为什么要需要API网关 - 抽取公共逻辑 - 像授权认证的代码在每个服
- 2.8 如何设计监控系统historical
1. 什么是监控 - 日志监控(Log):把代码中的日志收集在一个地方,用来统一查询处理 - 度量监控(Metrics):记录事件发生的时间和数值,用来查看趋势 - 调用链监控(Tracing):记录一个请求的全部流程。用来查看请求经过了哪些节点,每个节点的耗时 2. 为什么需要监控 微服务架构由众
- 2.9 如何设计链路追踪historical
1. 什么是链路追踪 记录一个请求的全部流程。用来查看请求经过了哪些节点,每个节点的耗时 2. 为什么需要链路追踪 能快速定位一个请求在整个链路上哪个节点出了问题 3. 如何实现链路追踪 3.1. 上报什么数据 3.1.1. Span 3.1.1.1. Span是什么 - 每调用一个模块就生成一个S
- 2.10 如何设计容错组件historical
1. 什么是容错 微服务架构下,如果一个服务故障了,那么会影响到整个链路,导致服务整体不可用 2. 为什么需要容错 确保服务的可用性,防止雪崩效应 2.1. 服务雪崩 多个微服务之间调用的时候,假设服务A调用服务B和C,服务B调用服务D和E,服务C调用服务F和服务G...这就叫 扇出 因“服务提供者
- 2.11 如何设计日志监控historical
1. 日志监控是什么 把代码中的日志收集在一个地方,用来统一查询处理 2. 为什么需要日志监控 如果没有日志监控,那么需要登录上每台机器进行查询,效率很低 3. 如何实现日志监控 3.1. 输出日志 - 由应用程序打印日志,输出到本地文件 - 日志打印策略 - 区分日志等级 - 关键路径和异常路径
- 2.12 如何设计metrics监控historical
1. metrics监控是什么 记录事件发生的时间和数值,用来查看趋势 2. 为什么需要metrics监控 可以用来查看趋势,在出问题之前告警 3. 如何实现metrics监控 3.1. 监控什么数据 - 系统层: - 系统层主要是指宿主机和容器的监控, - 指标:CPU、磁盘、内存、网络等 - 中