• ABC
    2022-04-02
    老师,请教个问题。在很多地方都提到PostgreSQL比 MySQL好用的多,但为什么现在主要还是用MySQL用的多一些呢?

    作者回复: 没有比较过两者,如果是事实的话,我觉得可能原因是MySQL的社区更庞大,资料更完善,历史更悠久。 本质上两个都是商品,决定市场占有率的因素有很多。一个新商品要抢占老商品的市场,好一点是不够的,必须要好好几倍,甚至要好一个数量级才行。成功的例子redis干掉memcached,智能机干掉功能机;没成功的例子更多,典型的基于JVM的各种语言,都动不了Java的地位。

    
    2
  • ball
    2022-08-24 来自北京
    老师想问下,php为什么要跑在apache上。似乎nginx + fpm方式更常用一些?

    作者回复: 谢谢指教,学习了~

    
    1
  • neohope
    2022-05-04
    对当前场景,可否这样: 1、每次上传图片时,都生成一个唯一文件UUID,词条中仅记录图片的唯一UUID。 2、在服务器返回词条时,先通过文件UUID判断是否完成同步,如果完成同步拼接本地服务地址,如果没有完成同步拼接主站点地址。 3、服务器还可以直接缓存网页,对于已经同步全部图片的,设置较长超时时间。对于没有完成全部图片同步的,设置较短超时时间。 4、刷新页面缓存时,判断MD5码,如果页面变动,主动通知CDN等,原页面失效;或直接推送新版本。 5、缓存页面时,可以前1%热点话题放内存,前5%话题放到SSD 6、 Tex公式转图片,可以用类似逻辑

    作者回复: 这个方案也是可行的,只是在查询词条时候的复杂度和性能都不太好,数据一致的问题需要在正常业务逻辑中处理,耦合性也不太好。 Otter的做法是在数据同步的时候进行检查,如果有图片,就把数据和图片打包在一个同步块内进行同步,保证数据和图片是一致的。同时把这部分逻辑放在数据同步的时候实现,对正常业务流程没有影响,耦合性更加友好一点。

    共 2 条评论
    1
  • HappyHasson
    2023-05-24 来自广东
    怎么保证读一致呢? 一个在从数据中心的写请求后立即请求读。这时候主数据中心的数据还未同步到从中心,读请求读到的数据不是最新的。这种读不一致的问题不需要解决吗

    作者回复: 百科词条的编辑需要经过审核的,写请求不会立即生效。

    
    
  • neohope
    2022-05-04
    老师好,想咨询您一个问题: 在多个数据中心之间,保持数据库的双A同步时,otter的单项回环补救机制,确实可以保证双中心数据最终是一致的。 但在一些极端情况下,业务上要如何处理的呢。比如: 货物A,双地库存一致都为200,同一时刻杭州卖了150件,US库也卖了150件,扣库存都可以成功,但最终超卖了。这种情况,业务上要如何处理的呢。 感谢!

    作者回复: 库存服务这样对数据一致性有强要求的场景,建议多数据中心之间采用主从结构,类似文中设计,库存写操作只能到主数据中心完成

    共 2 条评论
    
  • 花轮君
    2022-04-05
    思考题,是否将词条内容以及照片都设定对应的版本号,进行读取数据的时候只展示最新相同版本的数据,保证展示的数据的准确性

    作者回复: 很不错的思路。这个方案虽然检查版本号对响应性能有影响,而且数据同步延迟也会更长,但确实可以保证数据的准确性。

    
    
  • ABC
    2022-04-02
    还有另外一个思路,如果图片不大,可以base64转码,直接和词条存在一起,但这会导致相同图片出现冗余数据。

    作者回复: 赞,很不错的思路

    
    
  • ABC
    2022-04-02
    老师,可以图片服务器集群存储,然后各个数据中心不同步图片,直接从图片服务器集群访问图片吗

    作者回复: 这个方案没有达到异地多活的目标啊,可用性和性能都没有改善

    
    
  • Lance-Yanh
    2022-03-27
    从数据中心重放DDL的时候同步或异步检查图片是否同步完成,进一步确定是否延时重放DDL或主动同步完图片再重放。这样可以吗?老师

    作者回复: 很不错的方案,不过,编辑词条是高并发的,你的方案我担心会导致数据串行处理,数据同步延时太长了。

    
    
  • javaadu
    2022-03-25
    思考题,图片和文字属于某一个词条,那就将这个词条作为数据同步的最小粒度,利用词条信息将文本和图片绑定在一起

    作者回复: 赞,具体实现细节呢,如何绑定?如何同步数据?

    
    