posted @ 2019-01-26 12:51 王清培 阅读 (1733) 评论 (1)编辑 最近在陆续做机房升级相关工作,配合DBA对产线数据库链接方式做个调整,将原来直接链接读库的******切换到统一的读负载均衡的代理 haproxy 上,方便机柜和服务器的搬迁。 切换之后线上时不时的会发生 discard connection 错误,导致程序报 500 错误,但不是每次都必现的。 开发框架: spring boot+mybatis+druid+shardingJDBC 网络架构: appserver-mysql(master) 写 appserver-haproxy-mysql(slave)/n 读阅读全文 posted @ 2019-01-19 14:16 王清培 阅读 (1562) 评论 (2)编辑 在使用 RabbitMQ 的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景。RabbitMQ 为我们提供了两个选项用来控制消息的投递可靠性模式。 rabbitmq 整个消息投递的路径为: producer-rabbitmq broker cluster-exchange-queue-consumer message 从 producer 到 rabbitmq broker cluster 则会返回一个 confirmCallback 。 message 从 exchange-queue 投递失败则会返回一个 returnCallback 。我们将利用这两个 callback 控制消息的最终一致性和部分纠错能力。阅读全文 posted @ 2018-07-28 11:57 王清培 阅读 (3375) 评论 (0)编辑 最近一段时间内结束了数据库表拆分项目,这里做个简单的小结。 本次拆分主要包括订单和优惠券两大块,这两块都是覆盖全集团所有分子公司所有业务线。随着公司的业务飞速发展,不管是存储的要求,还是写入、读取的性都基本上到了警戒水位。 订单是交易的核心,优惠券是营销的核心,这两块基本上是整个平台的正向最核心部分。为了支持未来三到五年的快速发展,我们需要对数据进行拆分。 数据库表拆分业内已经有很多成熟方案,已经不是什么高深的技术,基本上是纯工程化的流程,但是能有机会进行实际的操刀一把机会还是难得,所以非常有必要做个总结。阅读全文 posted @ 2018-07-21 17:05 王清培 阅读 (1107) 评论 (0)编辑 从 __SOA__ 架构到现在大行其道的微服务架构,系统越拆越小,整体架构的复杂度也是直线上升,我们一直老生常谈的微服务架构下的技术难点及解决方案也日渐成熟(包括典型的数据一致性,系统调用带来的一致性问题,还是跨节点跨机房复制带来的一致性问题都有了很多解决方案),但是有一个环节我们明显忽略了。 在现在的微服务架构趋势下,微服务在运维层面和自动化部署方面基本上是比较完善了。从我个人经验来看,上层的开发、测试对微服务架构带来的巨大变化还在反应和学习中。阅读全文 posted @ 2018-07-08 14:32 王清培 阅读 (1380) 评论 (1)编辑 摘要:标签: 上海线下技术交流会 作者:王清培(Plen wang) 沪江Java资深架构师 、营销云平台负责人 上海地区技术线下交流,本次聚会AA制,要的就是热爱技术,交流技术,不是凑热闹。特此留念。 活动日程: 主题:电商平台架构设计 讲解人:王清培 居住地:上海 沪江 Java 架构师 、畅销书作者阅读全文 posted @ 2018-04-16 15:55 王清培 阅读 (853) 评论 (7)编辑 摘要:标签: 花旗金融培训 作者:王清培(Plen wang) 沪江Java资深架构师 、营销云平台负责人 受邀给花旗金融(上海)培训,一直没时间整理,特此留念。 谢谢。阅读全文 posted @ 2018-04-16 15:13 王清培 阅读 (697) 评论 (0)编辑 说到 ___hash table___ 有两个东西是我们经常会碰到的,首先就是 ___hash 碰撞___ 问题,__redis dict__ 是采用链******法来解决,___dictEntry-next___ 就是指向下个冲突 __key__ 的节点。 还有一个经常碰到的就是 __rehash__ 的问题,提到 __rehash__ 我们还是有点担心性能的。那么redis 实现是非常巧妙的,采用 ___惰性渐进式 rehash 算法___ 。阅读全文 |