1. 1.2 架构模式historical

    1. 单体架构 单体架构.md 2. 分层架构 分层架构.md 3. 事件驱动架构 事件驱动架构.md 4. CQRS架构 读写分离架构.md 5. 微服务架构 微服务.md 6. 可插拔架构 可插拔架构.md 7. 参考 - 架构模式 \- 维基百科,自由的百科全书

  2. 1.3 单体架构historical

    1. 什么是单体架构 - 将所有功能打包在一个容器中运行的设计风格,一个实例中集成了一个系统的所有功能。通过负载均衡软件/设备实现多实例调用 - 2. 单体架构的优缺点 - 优点 - 开发简单 - 部署简单 - 测试简单 - 缺点 - 业务耦合度高导致修改复杂 - 扩展性差

  3. 1.4 分层架构historical

    1. 什么是分层架构 根据系统中的角色/职责拆分和组织代码单元的常规实践 上层依赖下层,上层可以感知到下层,下层感知不到上层 2. 分层架构的演进 2.1. 一层 2.2. 两层 也叫单机架构 2.3. 三层 也叫集中式架构,C/S和B/S架构 2.4. DDD四层 2.4.1. 传统四层架构 用户

  4. 1.5 读写分离架构historical

    1. 什么是读写分离 把读操作(R)和写操作(CUD)分开,本质上就是分布式系统复制中的Leader-Follower模式 2. 为什么需要读写分离 提高读吞吐量 3. 读写分离适用场景 读多写少且允许数据不一致 4. 如何设计读写分离 4.1. 服务层读写分离 优点:代码易维护且没有数据一致性问题

  5. 1.6 事件驱动架构historical

    1. 什么是事件驱动架构 基于事件的一种软件架构模式 系统从A状态- B状态发布消息告知系统的其他部分 2. 为什么需要事件驱动架构 解耦:事件发起者并不知道哪个事件使用者在监听事件,而且事件也不知道其所产生的后续结果 异步 3. 事件驱动架构 对比请求驱动模式实时性差 4. 如何设计事件驱动架构

  6. 1.7 DDDhistorical

    1. 什么是DDD 领域驱动设计,是一种架构方法 1.1. 领域 1.1.1. 什么是领域 领域就是业务的范围/边界,大领域可以划分成多个中领域,中领域又可以继续划分成小领域... 本质就和解决问题一样,采用分而治之的思想把复杂问题简单化,从而降低业务理解和系统实现的复杂度 1.1.2. 为什么需要

  7. 1.8 微服务historical

    1. 什么是微服务架构 - 微服务架构是把单体应用 按功能模块拆分成一组服务 的架构 - 模块即服务,服务之间通过API通信 - 每个服务有自己独立的数据库 1.1. 微服务 vs SOA - 微服务架构是目前主流的构造分布式系统一种架构风格。它可以看做是SOA架构的一种变种或者是延伸 - 所谓分布

  8. 2.1 OpenId Connecthistorical

    1. OpenID Connect是什么 - 一种认证协议 - OAuth只是用于授权,没有定义认证的规范 - 基于OAuth2 - 只是多了个标准化的UserInfo Endpoint 2. OpenID Connect流程 - 跟OAuth.md一样。 - 区别在于 - 再在OAuth第一步请求

  9. 2.2 JWThistorical

    1. JWT是什么 - 用户认证成功后,服务器给用户发放的一种token - token是一定时间内有效的令牌,表明用户已经认证 2. 为什么需要JWT - 用于跨域认证 - 所谓跨域认证:指如果一个公司有两个域名A和B,那么用户在A域名认证后,访问B域名不用再次认证了 - 传统的跨域认证是cook

  10. 2.3 OAuthhistorical

    1. OAuth是什么 - 一种授权协议 - 用来授权第三方应用,获取用户数据。 2. 为什么需要OAuth - 以使用微博登录简书,简书需要用到微博的头像昵称 - 传统的作法是输入微博的用户名+密码获取,这种有几个问题 - 微博用户名密码暴露给了简书,可能会泄露 - 只想获取微博头像昵称,但是简书

  11. 2.4 如何设计配置中心historical

    1. 什么是配置中心 用来统一管理项目中所有配置的系统 2. 为什么需要配置中心 传统的配置是放在一个配置文件中,跟代码一起发布,这种每次修改了配置都要重新发布服务 而配置中心则是把配置存储在独立的配置服务器上,用户通过管理界面配置和调整服务配置,具体服务通过定期拉(Scheduled Pull)的

  12. 2.5 如何设计负载均衡组件historical

    1. 什么是负载均衡 - 将请求(工作负载)平均的打到到多个机器上以提高性能和可用性 2. 为什么需要负载均衡 - 通过机器冗余提高可用性 - 便于横向扩展以提高性能和吞吐量 - 垂直扩展指更换性能更强劲的机器,价格自然更高,性价比不咋地 3. 如何实现负载均衡组件 3.1. 负载均衡算法有哪些 负

  13. 2.6 如何设计注册中心historical

    1. 什么是注册中心 - 记录了 服务名<- IP地址+Port 的映射关系,本质上和DNS没区别 - 2. 为什么需要注册中心 没有注册中心那么A调用B只能写死IP地址,不灵活 3. 如何实现注册中心 3.1. 服务端 3.1.1. 服务注册表 2. 中心化、强一致存储中间件。比如Zookeepe

  14. 2.7 如何设计API网关historical

    1. 什么是API网关 - 网关=路由器+过滤器 - 路由器:外部请求的入口(单点入口)。一般微服务都是部署在内网,所有外部请求都先经过网关,由网关转发到后端服务器(服务路由)。 - 过滤器:限流熔断、安全认证、日志监控等 2. 为什么要需要API网关 - 抽取公共逻辑 - 像授权认证的代码在每个服

  15. 2.8 如何设计监控系统historical

    1. 什么是监控 - 日志监控(Log):把代码中的日志收集在一个地方,用来统一查询处理 - 度量监控(Metrics):记录事件发生的时间和数值,用来查看趋势 - 调用链监控(Tracing):记录一个请求的全部流程。用来查看请求经过了哪些节点,每个节点的耗时 2. 为什么需要监控 微服务架构由众

  16. 2.9 如何设计链路追踪historical

    1. 什么是链路追踪 记录一个请求的全部流程。用来查看请求经过了哪些节点,每个节点的耗时 2. 为什么需要链路追踪 能快速定位一个请求在整个链路上哪个节点出了问题 3. 如何实现链路追踪 3.1. 上报什么数据 3.1.1. Span 3.1.1.1. Span是什么 - 每调用一个模块就生成一个S

  17. 2.10 如何设计容错组件historical

    1. 什么是容错 微服务架构下,如果一个服务故障了,那么会影响到整个链路,导致服务整体不可用 2. 为什么需要容错 确保服务的可用性,防止雪崩效应 2.1. 服务雪崩 多个微服务之间调用的时候,假设服务A调用服务B和C,服务B调用服务D和E,服务C调用服务F和服务G...这就叫 扇出 因“服务提供者

  18. 2.11 如何设计日志监控historical

    1. 日志监控是什么 把代码中的日志收集在一个地方,用来统一查询处理 2. 为什么需要日志监控 如果没有日志监控,那么需要登录上每台机器进行查询,效率很低 3. 如何实现日志监控 3.1. 输出日志 - 由应用程序打印日志,输出到本地文件 - 日志打印策略 - 区分日志等级 - 关键路径和异常路径

  19. 2.12 如何设计metrics监控historical

    1. metrics监控是什么 记录事件发生的时间和数值,用来查看趋势 2. 为什么需要metrics监控 可以用来查看趋势,在出问题之前告警 3. 如何实现metrics监控 3.1. 监控什么数据 - 系统层: - 系统层主要是指宿主机和容器的监控, - 指标:CPU、磁盘、内存、网络等 - 中

  20. 2.13 如何设计认证授权historical

    1. 什么是认证授权 - 认证:当前用户的身份,解决我是谁的问题 - 授权:什么样的身份被允许访问某些资源,解决我能做什么的问题 - 凭证:认证和授权的基础,一种标记访问者的身份或权利的媒介 2. 为什么要认证授权 安全 3. 认证授权技术 3.1. 认证技术 3.1.1. HTTP认证 Base6

  21. 1.22 ServiceMeshhistorical

    云原生 原生:用Golang、Java等开发的应用叫做原生应用 云:开发后部署在一个地方,选择部署在云上 原生应用上云的一系列解决方案 相关的技术栈:Docker、K8S、KubeSphere、DevOps 云平台 云是相对本地环境说的,其实就是远程服务器。使用KubeShpere搭建云平台叫做私有云,使用公共的云平台叫做公有云 阿里云 安全组 安全组:防火

  22. 1.23 可插拔架构historical

    原始 VNote 笔记。

  23. 1.24 如何设计容器调度系统historical

    1. 什么是容器调度 2. 为什么需要容器调度 3. 如何设计容器调度系统 ! 20200620192733078 15410.png ! 20200620192747599 17762.png 4. 容器调度组件 4.1. K8S Kubernetes.md /notes/container/Kubernetes/Kubernetes/

  24. 1.25 如何设计流水线系统historical

    1. 什么是流水线 自动化构建、测试和部署 2. 为什么需要流水线 提高效率 3. 如何设计流水线 ! 20200620192606588 4067.png 4. 流水线组件 4.1. Jenkins