架构
文章平均质量分 65
铠甲蘑菇
这个作者很懒,什么都没留下…
展开
-
百度ID生成器高性能原因
百度ID生成器可以达到百万TPS,为什么如此高性能?1、消费未来时间百度ID生成器也是基于雪花算法,雪花算法中最后12位用于自增序列,这决定了雪花算法只支持每秒生成最多4096个id,这在一些批量生产数据的场景会不够用,百度ID生成器可以每秒几百万甚至更多,是因为百度ID生成器可以消费未来时间。消费未来时间是什么意思呢?正常雪花算法是取当前时间,百度的ID生成器可以利用未来时间生成好id缓存起来。并发大时可以使用到未来时间。2、本地生成并缓存和常规雪花算法...原创 2021-07-11 18:36:27 · 573 阅读 · 0 评论 -
基于百度ID生成器二次开发方案
背景百度开源的UidGenerator,比较适合我们交易的应用场景,但并不能直接拿来用,因为我们交易并不是使用spring体系,另外也还有其它需求,因此需要做一些二次开发目标1、提供框架无关的工具包,UidGenerator依赖Spring2、提供原数据获取接口,通过id查询id是由哪个机房,哪个国家生成的等架构主mysql:提供id元数据的管理,workId 通过mysql表自增生成,机房、地区等元数据存储到mysql表备mysql:采用半同步复制同步数据,提供主备自.原创 2021-05-04 18:53:35 · 225 阅读 · 0 评论 -
Java动态脚本选型
背景对账平台需要快速接入各种内部对账和渠道对账,提升接入效率是一个很有价值的点,通过引入动态脚本,将对账流程完全脚本化,能较大的提升接入效率,脚本化后,无需冗长乏味的开发部署周期,只要在管理后台做一些配置就能实现对账接入。备选方案 动态脚本 优点 缺点 原理 示例 参考资料 AviatorScript 1、轻量级 (...原创 2021-05-04 18:46:13 · 243 阅读 · 0 评论 -
使用xxl的分片广播路由策略实现对账的分片计算
背景最近在做一个新的对账平台,旧的对账系统存在很多问题,其中一个问题就是性能问题,因此新的对账平台从设计之初就考虑了性能这一块,下面不会讲为什么选择做新的对账平台,也不会讲对账平台的其他设计,就说一下如何使用xxl的分片广播路由策略实现对账的分片计算。场景分析渠道对账,一天一个批次,我们对接了100个渠道,然后每个渠道一天有100W的订单数,这是假设,不过对账平台的对账数据量的确会不断增加,事实上我们的对账平台不仅仅只有渠道对账,还有内部业务对账,因此单机计算不行,很自然的想到分片计算,就是我们原创 2021-02-14 18:36:16 · 1420 阅读 · 1 评论 -
记一次大数据表危机处理
背景基础交易数据库trade_base使用的是mysql数据库,有两张大表trade_base_order 和trade_base_resource_change_record,数据量分别达到了187G和258G,达到了总磁盘的81%,由于磁盘告警阀值设置在85%,加上数据主要集中在两张大表,导致了发现问题的时候已经无法增加索引和字段还有整块磁盘快耗尽的问题,mysql普通的delete无法释放磁盘空间,执行optmize table来释放磁盘空间也不行,因为剩余空间不够这个命令执行的要求,因此事情变.原创 2021-02-14 15:57:45 · 236 阅读 · 3 评论 -
中台学习笔记
什么是中台中台是企业级业务能力复用平台,企业级说明涉及的问题不是一条业务线的而是集团层面多条业务线的,能力复用不只是面向过去做些消除重复的事情,更重要的是面向未来赋能业务,新业务能复用已有的能力,达到快速响应满足用户的需求,提升企业生存和竞争的能力。复用的能力基本上就是四类:业务数据、业务功能、业务流程以及通用的技术能力。常见的中台有业务中台、数据中台、技术中台、研发中台、移动中台...原创 2019-09-30 22:11:30 · 295 阅读 · 1 评论 -
spring cloud 微服务架构学习笔记
什么是微服务架构“微服务”一词源于Martin Fowler的名为Microservices的博文。简单地说,微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成许多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过RPC/RESTFul API进行通信协作。微服务九大特征服务组件化 按业务组织团队 做“产品”的态度 智能端点与哑管道 去中心化治理...原创 2019-09-21 16:48:29 · 240 阅读 · 0 评论 -
记一次jmeter压测的坑
最近做了一个安全传输方案,因为怕对性能有较大影响,因此测试安排了针对性的压测压测的过程出现了一点小问题发现失败率特别高,测试怀疑是服务端出了错,但是我查看日志发现没有报错。后面我观察TCP链接数排除了服务端的嫌疑我发现跑着跑着,tcp链接数就突然就降低下来,也就是这个时候jmeter显示的错误率急剧升高。因此排除了服务端的嫌疑,然后让测试把日志输出打开,果然打开日志输出后,发现了大量的错误拿上面的...原创 2018-06-10 22:34:28 · 16320 阅读 · 1 评论 -
一个分布式事务解决方案
分布式系统中,只要涉及到跨服务调用并且服务各自用自己的数据源,就会存在数据不一致问题.通常来说要保证强一致性代价太大,绝大部分场景也不需要,根据BASE法则,我们保证最终一致性就好了,下面设计的方案就是一个保证最终一致性的方案.架构及原理 实现最终一致性本质上是通过重试确保的,因此业务一定要保证逻辑幂等性,之所以选择 redis 和 mq 是出于性能考虑。正常通知A1->A2->A3-...原创 2018-06-02 18:35:36 · 527 阅读 · 0 评论 -
特性开关之开关策略
特性开关有时只是简简单单的通过配置true or false来决定开或关,而有时要根据某种策略来决定开或关。对于开关策略,特性开关框架一般会提供不少默认的策略给我们用,但有时我们也会遇到框架没有提供而我们又想要的,这时则需要我们自定义。掌握特性开关框架默认提供的开关策略及如何自定义开关策略都很重要。下面我以FF4J这个框架为例,介绍它自带提供的策略及如何扩展实现自己的策略。FF4J默认提供的策略上...原创 2018-03-10 17:56:40 · 3163 阅读 · 0 评论 -
特性开关框架选型之FF4J vs Togglz
目前发现两个主要的开源的Java特性开关框架,togglz 和 ff4j。但是两个框架都优秀,都能达到开关切换等主要目的。选哪个?togglz vs ff4j比较项togglzff4j补充说明特性开关Togglz的开关需要定义在枚举中,ff4j不需要,通过一个字符串名就可以了特性分组togglz的分组是中看不中用,只是显示上的分组,而ff4j的分组可以以组的粒度进行开关Admin Consolet...原创 2018-03-10 17:50:03 · 5195 阅读 · 2 评论 -
特性开关应用场景调研
金丝雀发布XXX项目的金丝雀发布2017年下半年《XXX》项目新版本上线多次出现意料之外的问题,原因是测试环境环境和线上环境终究有差别,测试环境测试没问题,但并不能保证生产环境没问题。当时的解决方案是申请一台服务器,将其部署的跟生产环境一样,用相同的配置中心,相同的数据库…..,然后在路由层,针对内部一个特定的域名做映射,这样达到只有我们内部可以可以对其访问,这样测试先在这个环境的测试,无问题再发...原创 2018-03-10 17:35:26 · 1314 阅读 · 0 评论