14 | 百科应用系统设计:机房被火烧了系统还能访问吗?
概要设计
- 深入了解
- 翻译
- 解释
- 总结
百科知识应用网站的设计和架构对于支撑高并发访问和全球用户的需求提供了重要参考。Wepedia系统通过GeoDNS进行域名解析,利用CDN服务器和多级负载均衡实现高效的访问处理。多数据中心架构不仅提供用户就近访问服务,还具备容灾备份功能,通过数据同步保证数据一致性。在性能优化方面,Wepedia采用了多种策略,包括缓存、存储、数据库等方面的优化,以及使用CDN缓存、Nginx和Apache服务器集群、PHP服务器硬件改善和开源组件优化等,有效减轻了服务器压力,提升了系统性能。文章还提到了异地多活的多机房架构策略,即将数据中心分布在多个不同地点的机房里,以提高系统的处理能力和改善用户体验。同时,文章还提出了一个思考题,即词条编辑者修改词条的时候可能会导致数据和图片同步不一致的问题,需要解决这个问题以保证用户体验。整体而言,本文介绍了Wepedia系统的架构设计和性能优化策略,为构建高可用、高性能的百科知识应用系统提供了有益的参考和借鉴。
《李智慧 · 高并发架构实战课》,新⼈⾸单¥59
全部留言(21)
- 最新
- 精选
- ABC老师,请教个问题。在很多地方都提到PostgreSQL比 MySQL好用的多,但为什么现在主要还是用MySQL用的多一些呢?
作者回复: 没有比较过两者,如果是事实的话,我觉得可能原因是MySQL的社区更庞大,资料更完善,历史更悠久。 本质上两个都是商品,决定市场占有率的因素有很多。一个新商品要抢占老商品的市场,好一点是不够的,必须要好好几倍,甚至要好一个数量级才行。成功的例子redis干掉memcached,智能机干掉功能机;没成功的例子更多,典型的基于JVM的各种语言,都动不了Java的地位。
2022-04-023 - ball老师想问下,php为什么要跑在apache上。似乎nginx + fpm方式更常用一些?
作者回复: 谢谢指教,学习了~
2022-08-24归属地:北京1 - neohope对当前场景,可否这样: 1、每次上传图片时,都生成一个唯一文件UUID,词条中仅记录图片的唯一UUID。 2、在服务器返回词条时,先通过文件UUID判断是否完成同步,如果完成同步拼接本地服务地址,如果没有完成同步拼接主站点地址。 3、服务器还可以直接缓存网页,对于已经同步全部图片的,设置较长超时时间。对于没有完成全部图片同步的,设置较短超时时间。 4、刷新页面缓存时,判断MD5码,如果页面变动,主动通知CDN等,原页面失效;或直接推送新版本。 5、缓存页面时,可以前1%热点话题放内存,前5%话题放到SSD 6、 Tex公式转图片,可以用类似逻辑
作者回复: 这个方案也是可行的,只是在查询词条时候的复杂度和性能都不太好,数据一致的问题需要在正常业务逻辑中处理,耦合性也不太好。 Otter的做法是在数据同步的时候进行检查,如果有图片,就把数据和图片打包在一个同步块内进行同步,保证数据和图片是一致的。同时把这部分逻辑放在数据同步的时候实现,对正常业务流程没有影响,耦合性更加友好一点。
2022-05-0421 - HappyHasson怎么保证读一致呢? 一个在从数据中心的写请求后立即请求读。这时候主数据中心的数据还未同步到从中心,读请求读到的数据不是最新的。这种读不一致的问题不需要解决吗
作者回复: 百科词条的编辑需要经过审核的,写请求不会立即生效。
2023-05-24归属地:广东 - neohope老师好,想咨询您一个问题: 在多个数据中心之间,保持数据库的双A同步时,otter的单项回环补救机制,确实可以保证双中心数据最终是一致的。 但在一些极端情况下,业务上要如何处理的呢。比如: 货物A,双地库存一致都为200,同一时刻杭州卖了150件,US库也卖了150件,扣库存都可以成功,但最终超卖了。这种情况,业务上要如何处理的呢。 感谢!
作者回复: 库存服务这样对数据一致性有强要求的场景,建议多数据中心之间采用主从结构,类似文中设计,库存写操作只能到主数据中心完成
2022-05-042 - 花轮君思考题,是否将词条内容以及照片都设定对应的版本号,进行读取数据的时候只展示最新相同版本的数据,保证展示的数据的准确性
作者回复: 很不错的思路。这个方案虽然检查版本号对响应性能有影响,而且数据同步延迟也会更长,但确实可以保证数据的准确性。
2022-04-05 - ABC还有另外一个思路,如果图片不大,可以base64转码,直接和词条存在一起,但这会导致相同图片出现冗余数据。
作者回复: 赞,很不错的思路
2022-04-02 - ABC老师,可以图片服务器集群存储,然后各个数据中心不同步图片,直接从图片服务器集群访问图片吗
作者回复: 这个方案没有达到异地多活的目标啊,可用性和性能都没有改善
2022-04-02 - Lance-Yanh从数据中心重放DDL的时候同步或异步检查图片是否同步完成,进一步确定是否延时重放DDL或主动同步完图片再重放。这样可以吗?老师
作者回复: 很不错的方案,不过,编辑词条是高并发的,你的方案我担心会导致数据串行处理,数据同步延时太长了。
2022-03-27 - javaadu思考题,图片和文字属于某一个词条,那就将这个词条作为数据同步的最小粒度,利用词条信息将文本和图片绑定在一起
作者回复: 赞,具体实现细节呢,如何绑定?如何同步数据?
2022-03-25