随笔分类 - 架构设计与原则
架构设计与原则
摘要:大家好,我是陶朱公Boy.
今天跟大家分享一款基于“生产者消费者模式”下实现的组件。
该组件是作者偶然在翻阅公司一中间件源码的时候碰到的,觉得设计的非常精美、巧妙,花了点时间整理成文分享给大家。
阅读全文
摘要:柔性分布式事务关于异步解决方案MQ版 二阶段提交思想
阅读全文
摘要:本文从原始通信时代需要面临的服务自己需要处理丢包、乱序、重试等一系列流控问题再到Tcp时代解决了网络传输中通用流控的问题 当网络通信不再是一个难题时,这个时候分布式通信语义就出现了 比如熔断、负载均衡,服务发现,认证授权、trace跟踪和监控等 于是服务只能自己实现相关语义 这个时候第四代微服务出现了框架代表的如Spring Cloud本身实现了软负载和服务注册发现功能使得开发人员更加关注自身业务,到第五代时候 人们发现一个问题这些第四代的方案 都是局限于某种特定语言,而且还存在lib冲突等 因此 边车模式sideCar产生了代表Linkerd,Envoy,Ngixmesh 以一个小的边车服务和业务服务编排在一起 业务方完全不需要集成相关框架 再到第六代以Istil为代表的service Mesh 新增了集中式控制面板进行网络拓扑策略的更新和单机数据的汇报,目的是为了提供统一的上层运维入口
阅读全文
摘要:秒杀系统架构设计明细篇 -摘自架构之美公众号
阅读全文
摘要:系统设计之解决核心问题的设计 原创: bluedavy HelloJava 8月1日 继前面的系统建设的目的、可衡量的目标,达成目标的核心问题后,进入到解决核心问题的设计环节了,技术人员其实最擅长的是直奔这个主题,而且估计更期盼的也是这篇,有些时候会导致跳过前面的目的、目标环节,导致最终做出来的系统
阅读全文
摘要:mqtt
阅读全文
摘要:本文讲述阿里云官方文档中关于通过MQ实现分布式事务最终一致性原理
阅读全文
摘要:TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical Processing) 数据库,结合了传统的 RDBMS 和 NoSQL 的最佳特性。TiDB 兼容 MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB 的目标是为 OLTP (Online Transactional Processing) 和 OLAP (Online Analytical Processing) 场景提供一站式的解决方案。
TiDB 具备如下特性:
高度兼容 MySQL
大多数情况下,无需修改代码即可从 MySQL 轻松迁移至 TiDB,分库分表后的 MySQL 集群亦可通过 TiDB 工具进行实时迁移。
水平弹性扩展
通过简单地增加新节点即可实现 TiDB 的水平扩展,按需扩展吞吐或存储,轻松应对高并发、海量数据场景。
分布式事务
TiDB 100% 支持标准的 ACID 事务。
真正金融级高可用
相比于传统主从 (M-S) 复制方案,基于 Raft 的多数派选
阅读全文
摘要:Leaf是美团基础研发平台推出的一个分布式ID生成服务,名字取自德国哲学家、数学家莱布尼茨的一句话:“There are no two identical leaves in the world.”Leaf具备高可靠、低延迟、全局唯一等特点。目前已经广泛应用于美团金融、美团外卖、美团酒旅等多个部门。具体的技术细节,可参考此前美团技术博客的一篇文章:《Leaf美团分布式ID生成服务》。近日,Leaf项目已经在Github上开源:https://github.com/Meituan-Dianping/Leaf,希望能和更多的技术同行一起交流、共建。
阅读全文
摘要:在美团,基于 MySQL 构建的传统关系型数据库服务已经难于支撑公司业务的爆发式增长,促使我们去探索更合理的数据存储方案和实践新的运维方式。随着近一两年来分布式数据库大放异彩,美团 DBA 团队联合架构存储团队,于 2018 年初启动了分布式数据库项目。
阅读全文
摘要:每个业务都会需要鉴权、限流、权限校验等逻辑,如果每个业务都各自为战,自己造轮子实现一遍,会很蛋疼,完全可以抽出来,放到一个统一的地方去做。
如果业务量比较简单的话,这种方式前期不会有什么问题,但随着业务越来越复杂,比如淘宝、亚马逊打开一个页面可能会涉及到数百个微服务协同工作,如果每一个微服务都分配一个域名的话,一方面客户端代码会很难维护,涉及到数百个域名,另一方面是连接数的瓶颈,想象一下你打开一个APP,通过抓包发现涉及到了数百个远程调用,这在移动端下会显得非常低效。
每上线一个新的服务,都需要运维参与,申请域名、配置Nginx等,当上线、下线服务器时,同样也需要运维参与,另外采用域名这种方式,对于环境的隔离也不太友好,调用者需要自己根据域名自己进行判断。
另外还有一个问题,后端每个微服务可能是由不同语言编写的、采用了不同的协议,比如HTTP、Dubbo、GRPC等,但是你不可能要求客户端去适配这么多种协议,这是一项非常有挑战的工作,项目会变的非常复杂且很难维护。
后期如果需要对微服务进行重构的话,也会变的非常麻烦,需要客户端配合你一起进行改造,比如商品服务,随
阅读全文
摘要:设计模式六大原则之单一原则的设计注意事项
阅读全文