《可伸缩服务架构:框架与中间件》读书笔记 设计不重复高性能分布式发号器分布式系统对发号器的基本需求全局唯一粗略有序可反解可制造高性能高可用可伸缩发布模式可分为嵌入发布模式只适用于Java客户端提供一个本地Jar包Jar包是嵌入式的原生服务需要提前配置本地的机器ID但是不依赖于中心服务器中心服务器发布模式只适用于Java客户端提供一个服务的客户端Jar包Java程序像调用本地API一样来调用但是依赖于中心的ID产生服务器REST发布模式中心服务器通过Restful API导出服务供非Java语言客户端使用消息队列框架同步线程模型异步线程模型优雅关机的重点在于如何知道JVM要退出如何阻止Daemon的线程在JVM退出后被杀掉如果Worker线程处于阻塞状态则如何唤醒并退出反射机制轻量级数据库分库分表架构分库分表垂直拆分根据业务的维度将原本的一个库表拆分为多个库表​每个库表与原有的结构不同水平拆分根据分片(sharding)算法将一个库表拆分为多个库表​每个库表依旧保留原有的结构通常先进行垂直拆分使单体应用形成多个微服务结构在微服务中再进行水平库表拆分。三个阶段单库单表原始形态单库多表单库对表水平切分产生多个结构完全一样的表多库多表对库进行水平切分方案实现方案分成三大类客户端分片、代理分片和支持事务的分布式数据库如OceanBase、TiDB。客户端分片使用分库分表的数据库的应用层直接操作分片逻辑分片规则需要在同一个应用的多个节点间进行同步每个应用层都嵌入一个操作切片的逻辑实现分片规则​这一般通过依赖Jar包来实现。实现方式分为三种应用层直接在应用层读取分片规则然后解析分片规则根据分片规则实现切分的路由逻辑从应用层直接决定每次操作应该使用哪个数据库实例、数据库及哪个数据库的表等。优点性能更高实现简单有问题时容易定位和修复缺点业务侵入定制JDBC协议业务透明不侵入业务。如Sharding JDBC定制ORM框架在ORM框架中实现分片规则或通过ORM框架的扩展机制代理分片在应用层和数据库层增加代理层把分片路由规则配置在代理层代理层对外提供与JDBC兼容的接口给应用层应用层开发人员不用关心分片规则只需关心业务逻辑实现待业务逻辑实现后在代理层配置路由规则即可。优点应用层开发人员专注于业务逻辑的实现把分库分表配置留给代理层做缺点增加代理层多一层网络传输。代表如Cobar和Mycat。架构设计分布式事务事务路由自动提交事务路由可编程事务路由声明式事务路由读写分离Mycat分片规则枚举固定分片Hash算法范围约定求模法日期列分区法通配取模ASCII码通配求模编程指定截取数字Hash解析一致性HashSharding JDBC核心概念LogicTableActualTableDataNodeBindingTableShardingColumnShardingAlgorithm使用限制不支持Having不支持Union和Union All不支持or不支持批量insert不支持distinct聚合不支持多子查询嵌套缓存及实践适合使用缓存的场景读密集型应用、存在热数据的应用、对响应时效要求较高、对一致性要求不严格、需要实现分布式锁的时候不适合的场景读少、更新频繁、对一致性要求严格。ESLucene读写流程核心术语检索方式单个词查询ANDORNOT分段存储类似于CMS的分段思想将一个索引文件拆分成若干个子文件即段每个段都是一个独立的可被搜索的数据集具有不变性一旦写入磁盘则不可修改。段不变性的优点缺点端合并策略解决段的碎片率问题分布式定时任务RPCRPC优势简单语义十分清晰和简单便于建立分布式系统高效能高效地实现远程的过程调用通用RPC导出的服务可以供多个使用者用于不同的目的ZeroC IceZeroC公司的Ice(Internet CommunicationsEngine)中间件平台受到CORBA影响。提供面向对象的RPC、网格计算和发布-订阅功能支持Linux等操作系统C、C#、Java、JS、Python等主流语言。可用于应用程序中不需要使用HTTP方式能穿透防火墙。主要组件介绍Slice(Specification Language for Ice)是Ice的规范语言也是ZeroC私有的一种文件格式程序员按照它来编辑独立于计算机语言的声明、类、接口、结构和枚举的定义。Slice定义文件被用来作为存根生成过程的输入。存根依次被连接到应用程序和服务器上它们应该基于Slice声明、定义的接口和类进行互相通信IceStorm发布-订阅服务减少客户端和服务器的耦合度。发布者将事件发给IceStorm服务它按照顺序将事件传递给订阅者。一个事件发布者可把一个事件发布给多个订阅者。事件还可按照主题分类订阅者可指定感兴趣主题只有订阅者感兴趣的主题才会被发送给订阅者。也能允许指定服务的质量从而允许应用在可伸缩性和性能之间进行适当的折中IceBox简单的应用服务器包含可执行的由.dll或.so库实现的服务它可以协调多个应用组件启动和停止。应用组件可以用动态链接库的形式发布而不是一个进程这是一个更轻量的选择。可在一个JVM中运行若干个应用组件而不是有多个进程IceGrid是一个Ice位置服务的实现提供负载均衡、故障转移、对象发现和注册服务IcePatch2软件补丁服务。允许轻松地把软件的更新发布给客户。客户连接到IcePatch后请求更新一个特定的应用服务自动检查客户软件的版本然后下载需要更新的组件。这些下载的组件都是放在一个压缩包里的减少对带宽的占用软件补丁也可以通过结合Glacier服务发布这样只有经过授权的客户才能下载软件并更新Glacier2防火墙服务允许客户端和服务器通过防火墙安全地通信通信通过使用公钥认证完全加密且通信是双向的。Glacier提供相互认证和安全的会话管理支持。Dubbo源码高性能网络中间件

相关新闻

最新新闻

Bandizip:现代解压缩工具如何通过细节设计提升工作效率

Bandizip:现代解压缩工具如何通过细节设计提升工作效率

上周帮同事处理一个压缩包,解压时弹窗广告、捆绑安装、密码错误、文件损坏……一连串问题折腾了半小时。那一刻我突然意识到,很多人还在用着十几年前的老工具,忍受着各种弹窗、广告和兼容性问题,却不知道解压缩软件这个看似简单的…

2026/8/23 2:15:41
大模型算法岗面试全攻略:理论与工程实践

大模型算法岗面试全攻略:理论与工程实践

1. 大模型算法岗面试全景解析2023年暑期实习季,大模型算法工程师岗位的竞争激烈程度远超往年。头部科技公司的面试流程通常包含3-5轮技术面,每轮持续60-90分钟,考察维度覆盖算法基础、工程实现、论文复现和业务场景适配四大板块。以某知名企业…

2026/8/23 2:15:41
旅游业销售岗面试速通指南:核心技巧与实战策略

旅游业销售岗面试速通指南:核心技巧与实战策略

1. 项目概述:旅游业销售岗面试速通指南面试就像一场精心设计的障碍赛,而旅游业销售岗的面试更是对综合素质的全面考验。作为从业十年的旅游行业老兵,我见过太多优秀的候选人因为准备不足而错失机会。这份指南将带你拆解旅游业销售岗的面试全流…

2026/8/23 2:15:41
硬科技孵化方法论:从李泽湘模式看技术商业化与创业生态构建

硬科技孵化方法论:从李泽湘模式看技术商业化与创业生态构建

最近在硬科技投资圈,一个名字被反复提及——李泽湘。这位被誉为“大疆教父”的教授,不仅孵化了大疆创新这家全球无人机巨头,如今他创办的固高科技也成功登陆资本市场,再次证明了“教授创业”与“硬科技孵化”模式的巨大潜力。对于…

2026/8/23 2:15:41
开源音乐播放器TwilightEcho:集成网易云音乐与本地Hifi播放体验

开源音乐播放器TwilightEcho:集成网易云音乐与本地Hifi播放体验

这次我们来看一个开源的本地音乐播放器项目——TwilightEcho。它最大的特点是深度集成了网易云音乐的登录和播放功能,让你能在本地播放器里直接使用网易云的音乐库,同时它还自称是一款“Hifi播放器”,支持多种音频格式和音效增强。对于习惯用…

2026/8/23 2:15:41
CLion环境配置全攻略:从编译器选型到高效调试与插件优化

CLion环境配置全攻略:从编译器选型到高效调试与插件优化

1. 从“能用”到“好用”:CLion环境配置的深度实践 每次接手一个新项目,或者换一台新电脑,最头疼的莫过于环境配置。尤其是对于C/C开发来说,一个顺手的IDE环境,往往意味着开发效率的成倍提升。CLion作为JetBrains家族…

2026/8/23 2:10:40