扩展系统及其数据库以处理 10k 请求。什么是正确的分片或微服务去分布式数据库
Scaling the System and its Database for 10k request handling. What's right Sharding or Microservice going for Distributed database
"Inability of MySQL to scale write requests beyond one node became a killer problem as data volumes grew leaps and bounds. MySQL’s monolithic architecture essentially forces application-level sharding.The development and operational complexity grows exponentially when the number of such instances grow from 1 to 100s and thereafter explode into 1000s."
所以,如果我使用分片来扩展应用程序,那么
我不能将数据库本身用于任何跨分片 JOIN 和事务。好像是真的,但是是真的吗 ??
对于 10k 并发请求和更多请求,扩展应用程序和数据库的更好和更有效的方法是什么。 ??
我认为选择微服务不是这里的解决方案还是 ??
答案比简单的真或假更微妙。水平的
MySQL 的分片解决方案,例如 Vitess (vitess.io) 确实允许您
cross-shard joins and transactions,但 只是因为你
可以并不意味着你应该。分片架构将执行
如果你设计得好并发挥它的优势,那就最好了,例如偏袒
任何单个事务中的单分片目标写入。
在 Vitess 中启用两阶段提交以支持跨分片写入 is
可能,但会以显着的性能成本为代价。这种权衡是否值得因应用程序而异,一般来说,调整 schema/workload 被认为是更好的方法。
最好将微服务视为一种设计原则,而不是将其视为
缩放技巧。这种架构更适合改进
部署的弹性和灵活性,通过分解单体
部署到更松散耦合、孤立的元素中。因为
管理水平分片对齐资源的复杂性
密切关注微服务中管理资源的挑战
架构,Vitess 实际上非常适合容器
编排环境,通常 deployed/managed
使用 Vitess Operator for Kubernetes 的容器。
简而言之,水平扩展 MySQL 在微服务架构和更传统的环境中既可行又普遍。
顺便说一句,10K 并发请求是相对模糊的衡量标准。配置良好的单服务器 MySQL 安装每秒处理数十万个查询并不少见,因此请记住,您可能面临的任何扩展挑战也可以通过优化代码、查询、模式来解决and/or MySQL 配置。
"Inability of MySQL to scale write requests beyond one node became a killer problem as data volumes grew leaps and bounds. MySQL’s monolithic architecture essentially forces application-level sharding.The development and operational complexity grows exponentially when the number of such instances grow from 1 to 100s and thereafter explode into 1000s."
所以,如果我使用分片来扩展应用程序,那么
我不能将数据库本身用于任何跨分片 JOIN 和事务。好像是真的,但是是真的吗 ??
对于 10k 并发请求和更多请求,扩展应用程序和数据库的更好和更有效的方法是什么。 ?? 我认为选择微服务不是这里的解决方案还是 ??
答案比简单的真或假更微妙。水平的 MySQL 的分片解决方案,例如 Vitess (vitess.io) 确实允许您 cross-shard joins and transactions,但 只是因为你 可以并不意味着你应该。分片架构将执行 如果你设计得好并发挥它的优势,那就最好了,例如偏袒 任何单个事务中的单分片目标写入。 在 Vitess 中启用两阶段提交以支持跨分片写入 is 可能,但会以显着的性能成本为代价。这种权衡是否值得因应用程序而异,一般来说,调整 schema/workload 被认为是更好的方法。
最好将微服务视为一种设计原则,而不是将其视为 缩放技巧。这种架构更适合改进 部署的弹性和灵活性,通过分解单体 部署到更松散耦合、孤立的元素中。因为 管理水平分片对齐资源的复杂性 密切关注微服务中管理资源的挑战 架构,Vitess 实际上非常适合容器 编排环境,通常 deployed/managed 使用 Vitess Operator for Kubernetes 的容器。
简而言之,水平扩展 MySQL 在微服务架构和更传统的环境中既可行又普遍。
顺便说一句,10K 并发请求是相对模糊的衡量标准。配置良好的单服务器 MySQL 安装每秒处理数十万个查询并不少见,因此请记住,您可能面临的任何扩展挑战也可以通过优化代码、查询、模式来解决and/or MySQL 配置。