微服务的设计原则与⽣态系统 - 王磊微服务的设计原则 与⽣生态系统 王磊磊 华为公司技术专家 ThoughtWorks⾸首席咨询师 Sybase Tech Leader • 《微服务架构与实践》作者 • 《DevOps Handbook》中⽂文译者之⼀一 • 国内较早倡导和实践微服务的先⾏行行者 • 对于⾃自动化测试、持续交付、DevOps有丰富的实践经验 • ⻄西安DevOps Meetup 联合发起⼈人 联合发起⼈人 关于我 议题 • 微服务架构的核⼼心 • 微服务架构设计原则 • 微服务架构⽣生态系统 Are you using microservices? Are you using microservices? https://www.nginx.com/resources/library/app-dev-survey/ 什什么是微服务架构? • 微服务架构是⼀一种架构模式, https://www.supinfo.com/articles/single/3652-what-is-devops 架构⼀一旦确定,很难改变 什什么是演进式架构? ⽀支持增量量式变更更作为第⼀一原则 什什么是演进式架构? • 演进是动态平衡 • 痛苦的事情提前做 • 运维意识是关键 演进式架构 拥抱变化 动态平衡 业务 技术 团队 架构的演进基于业务、技术和团队的平衡 - 动态的平衡0 码力 | 62 页 | 6.65 MB | 1 年前3
运维上海2017-从理论到实践,深度解析MySQL Group Replication -徐春阳的事务在每个节点以相同的顺序被应用/执行.------paxos协 议的功能。 • 自动地事务冲突检测。节点之间不能”同时”操作主键相同 记录,如果冲突,只有一个节点成功。------冲突检测。 • 节点故障容忍度强。多数派原则,超过半数节点存活的集 群依然整体可用。------paxos协议。 • 更高级别地保证数据的一致性 ------vs mysql的异步/半同 步复制。 MGR�����:! • 将源自多个数据库节点并发无序的消息进行全局排序。目的 是保证每个节点执行的事务完全相同,顺序也相同。 • 所有的消息在各个节点处理动作完全相同,如果某个消息在 某个节点被丢弃(不处理 ,在其他节点也将被丢弃。 • 多数派原则,一个消息被超过半数的节点接收&”赞成”,则这 个消息将在全局生效,所有的节点都得执行(处理 这个消 息。 • Paxos协议只实现消息全局排序,不处理冲突。 Paxos��:! •0 码力 | 32 页 | 9.55 MB | 1 年前3
分布式NewSQL数据库TiDB分布式NewSQL数据库 TiDB Copyright © 2012-2021 UCloud 优刻得 12/120 真正⾦融级⾼可⽤ 真正⾦融级⾼可⽤ 相⽐于传统主从 (M-S) 复制⽅案,基于 Raft 的多数派选举协议可以提供⾦融级的 100% 数据强⼀致性保证,且在不丢失⼤多数副本的前提下,可以实现故障的⾃动恢复 (auto- failover),⽆需⼈⼯介⼊。 产品优势 分布式NewSQL数据库 TiDB ETL ⼯具或者 TiDB 的同步⼯具将数据同步到 TiDB,在 TiDB 中可通过 SQL 直接⽣成报表 真正⾦融级⾼可⽤ 真正⾦融级⾼可⽤ 相⽐于传统主从 (M-S) 复制⽅案,基于 Raft 的多数派选举协议可以提供⾦融级的 100% 数据强⼀致性保证,且在不丢失⼤多数副本的前提下,可以实现故障的⾃动恢复 (auto- failover),⽆需⼈⼯介⼊。 适⽤场景 分布式NewSQL数据库 TiDB0 码力 | 120 页 | 7.42 MB | 6 月前3
TiDB中文技术文档的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。 分布式事务 TiDB 100% 支持标准的 ACID 事务。 真正金融级高可用 相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保 证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。 一站式 HTAP 解决方案 TiDB 作为典型的 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。 分布式事务 TiDB 100% 支持标准的 ACID 事务。 真正金融级高可用 相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选举协议可以提供金融级的 100% 数据强一致性保 证,且在不丢失大多数副本的前提下,可以实现故障的自动恢复 (auto-failover),无需人工介入。 一站式 HTAP 解决方案 TiDB 作为典型的 的 139. # sst 和 level2 种有 overlap 的 sst 进行 compaction。 140. # 黄金定律:max-bytes-for-level-base 的设置的第一参考原则就是保证和 level0 的数据量大致相 141. # 等,这样能够减少不必要的 compaction。例如压缩方式为"no:no:lz4:lz4:lz4:lz4:lz4",那么 142. # ma0 码力 | 444 页 | 4.89 MB | 6 月前3
FISCO BCOS 1.3 中文文档示例2-自定义业务权限Filter合约 设计概述 FISCO BCOS区块链为了满足准入控制、身份认证、配置管理、权限管理等需 求,在网络启动之初,会部署一套功能强大、结构灵活且支持自定义扩展的智 能合约,统称系统合约。 系统合约原则上由区块链管理员在网络启动之初部署全网生效。若是在网络运 行期间重新部署变更升级,则需要在全网所有节点许可的情况下由区块链管理 员来执行操作。 当前FISCO BCOS系统合约主要有五个模块,系统代理模块、节点管理模块、 项 全网配置合约 ConfigAction.sol是全网配置模块的实现合约。它维护了FISCO BCOS区块链中 全网运行的可配置信息。 配置信息可以通过交易广播上链来达到全网配置的 一致性更新。原则上只能由区块链管理员来发出全网配置更新交易。 ConfigAction.sol的内部实现中维护了配置项信息的mapping 成员变量。 主要接口如下: 接 口 输入参数 输出参数 说明 set 链 架构类似数据库的分库分表,或者互联网服务的分SET模型,理论上只要投入 足够的资源,则系统能处理的流量没有上限,整个系统具有足够的弹性。 同时,一个区块链网络里的多个分组秉承逻辑和配置高一致性的原则,在商业 规则、运营管理上都使用统一的策略,比如,每个分组上的智能合约是完全相 同的,核心配置数据也是相同的,只有分组里的机构、用户以及交易类型有所 不同。 或者,虽然因为分组间功能设计的差异,导致不同分组上的智能合约有所不0 码力 | 491 页 | 5.72 MB | 1 年前3
TiDB 开源分布式关系型数据库存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩 容或者缩容过程中对应用运维人员透明。 金融级高可用 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能 提交,确保数据强一致性有少数副本发生故障时不影响数据的可用性。可按需配置副本地理位 置、副本数量等策略满足不同容灾级别的要求。 钢 实时HTAP 提供行存储引擎 TiKV、列存储引擎0 码力 | 58 页 | 9.51 MB | 1 年前3
TiDB v5.3 中文手册存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者 缩容过程中对应用运维人员透明。 • 金融级高可用 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确 保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等 策略满足不同容灾级别的要求。 • 实时 HTAP 提供行存储引擎TiKV、列存储引擎TiFlash 的账号体系与 TiDB SQL 用户一致,并基于 TiDB SQL 用户的权限进行 TiDB Dashboard 授权验 证。TiDB Dashboard 所需的权限较少,甚至可以只有只读权限。可以基于最小权限原则配置合适的用户 访问 TiDB Dashboard,减少高权限用户的使用场景。 建议为访问 TiDB Dashboard 创建一个最小权限的 SQL 用户,并用该用户登录 TiDB Dashboard,避免使用高 down-peer-region-count:Raft leader 上报有不响应 peer 的 Region 数量。 • offline-peer-region-count:peer 下线过程中的 Region 数量。 原则上来说,该监控面板偶尔有数据是符合预期的。但长期有数据,需要排查是否存在问题。 6.5.1.5 KV Request Duration 图 38: TiKV 相应时间 TiKV 当前.99(百0 码力 | 2374 页 | 49.52 MB | 1 年前3
TiDB v6.1 中文手册存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者 缩容过程中对应用运维人员透明。 • 金融级高可用 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确 保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等 策略满足不同容灾级别的要求。 • 实时 HTAP 提供行存储引擎TiKV、列存储引擎TiFlash service 包,内含了项目实现的接口与逻辑 接口 PlayerService.java 文件内定义了逻辑接口,实现接口,而不是直接编写一个类的原因,是尽量使例子贴近 实际使用,体现设计的开闭原则。你也可以省略掉此接口,在依赖类中直接注入实现类,但并不推荐这样做。 package com.pingcap.service; import com.pingcap.dao.PlayerBean; PROPAGATION_NESTED 传播行为。基于 Java Spring 框架的应用如果使用 了 PROPAGATION_NESTED 传播行为,需要在应用端做出调整,将嵌套事务的逻辑移除。 4.8.3.5 大事务限制 基本原则是要限制事务的大小。TiDB 对单个事务的大小有限制,这层限制是在 KV 层面。反映在 SQL 层面的话, 简单来说一行数据会映射为一个 KV entry,每多一个索引,也会增加一个 KV entry。所以这个限制反映在0 码力 | 3572 页 | 84.36 MB | 1 年前3
TiDB v5.4 中文手册存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者 缩容过程中对应用运维人员透明。 • 金融级高可用 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确 保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等 策略满足不同容灾级别的要求。 • 实时 HTAP 提供行存储引擎TiKV、列存储引擎TiFlash down-peer-region-count:Raft leader 上报有不响应 peer 的 Region 数量。 • offline-peer-region-count:peer 下线过程中的 Region 数量。 原则上来说,该监控面板偶尔有数据是符合预期的。但长期有数据,需要排查是否存在问题。 6.5.1.5 KV Request Duration 图 43: TiKV 相应时间 TiKV 当前.99(百 点无法上线时,此段数据会 一直保持暂不可用的状态。这时,如果用户希望集群恢复正常使用,在用户能够容忍数据回退或数据丢失的 前提下,用户理论上可以通过手动移除不可用副本的方式,使 TiDB 重新形成多数派,进而让上层业务可以写 入和读取(可能是 stale 的,或者为空)这一段数据分片。 在这个情况下,当存有可容忍丢失的数据的部分节点受到永久性损坏时,用户可以通过使用 Online Unsafe0 码力 | 2852 页 | 52.59 MB | 1 年前3
TiDB v7.1 中文手册存储计算分离的架构的设计,可按需对计算、存储分别进行在线扩容或者缩容,扩容或者 缩容过程中对应用运维人员透明。 • 金融级高可用 数据采用多副本存储,数据副本通过 Multi-Raft 协议同步事务日志,多数派写入成功事务才能提交,确 保数据强一致性且少数副本发生故障时不影响数据的可用性。可按需配置副本地理位置、副本数量等 策略,满足不同容灾级别的要求。 • 实时 HTAP 提供行存储引擎TiKV、列存储引擎TiFlash NESTED 传播行为。基于 Java Spring 框架的应用如果使用了 PROPAGATION_NESTED 传播行为, 需要在应用端做出调整,将嵌套事务的逻辑移除。 4.8.3.5 大事务限制 基本原则是要限制事务的大小。TiDB 对单个事务的大小有限制,这层限制是在 KV 层面。反映在 SQL 层面的话, 简单来说一行数据会映射为一个 KV entry,每多一个索引,也会增加一个 KV entry。所以这个限制反映在 Schema 设计:根据你的业务负载类型,为了避免事务冲突或者是热点,你可能需要对表的 Schema 做出 一些调整。 4.9.1.1 SQL 性能调优 为了让 SQL 语句的性能更好,可以遵循以下原则: • 扫描的数据越少越好,最好能只扫描需要的数据,避免扫描多余的数据。 • 使用合适的索引,对于 SQL 中的 WHERE 子句中的 Column,需要保证有相应索引,否则这将是一个全表扫 的语句,性能会很差。0 码力 | 4369 页 | 98.92 MB | 1 年前3
共 464 条
- 1
- 2
- 3
- 4
- 5
- 6
- 47













