架构设计
文章平均质量分 79
hamish-wu
普通程序员
展开
-
TCC-Transaction Dubbo 项目 demo
最早接触 TCC-TRANSACTION 在16年,当时团队成员做了分布式事务的选型研究,可惜没有亲自参与研读代码,后边项目分布式事务的架构基本上使用了seata 和 rocket 事务消息,或者使用消息做最终一致性。在成为架构师的学习路上,分布式事务的深入研究必不可少,以TCC-TRANSACTION 作为切入点。原创 2022-08-24 22:37:24 · 533 阅读 · 1 评论 -
分布式系统id生成方案分析
一、分布式系统的id 生成分布式id 需要保证全局唯一,在此基础上 尽可能的保证有序,语义性。有序性是为了匹配mysql 总innodb引擎的 数据存储结构语义性是便于查找问题,例如从id 中可以辨识出业务类型,时间等信息。二、UUID 分析UUID 是一种过去比较流流行的分布式id 生成方案,使用方式简单,Mybatis-plus 内置了UUID 主键生成器。UUID 可以保证唯一性,但是没有顺序,更没有语义含义。在分布式系统中 UUID 虽然可以使用,但是影响了mysql 数据写入性能。原创 2022-03-06 21:52:01 · 537 阅读 · 0 评论 -
Spring 异步线程中传递ThreadLocal
ThreadLocal 的传递原创 2021-12-28 00:01:07 · 1547 阅读 · 0 评论 -
专业网盘中大文件夹移动、复制问题解决实践
网盘系统设计、线上oom、ES 查询参数、监控对比大文件的移动、复制逻辑实践原创 2021-12-17 00:28:11 · 818 阅读 · 0 评论 -
会员微服务设计文档
会员中心,会员中台设计概要,微服务思想,设计文档模板,评审模板,业务架构设计原创 2021-12-15 00:32:47 · 875 阅读 · 0 评论 -
一次springboot扫描范围引起的启动报错
公司的框架出了问题,多个项目启动报错,花费了半天时间解决,多亏最近钻研springframework源码。背景公司有一套分布式spring alibaba架构的系统,分为边缘服务,和服务池服务,服务治理一般,没有全局规划,半年前有外购一套分布式CRM系统,强行注册到一个服务中心,突然某个版本的多个边缘服务启动报错,导致测试停顿半天。启动代码@CanaryCloudApplication(applicationName = "b2b-consumer-edge", serverServletContex原创 2021-07-28 15:56:50 · 1166 阅读 · 0 评论 -
高并发架构-发现热点
高并发项目通常是javaWeb 项目中ToC 场景,例如常见的秒杀,抢票。从项目开发到上线,整个项目周期都需要关注热点数据,准去的预测和监控热点数据可以帮助开发更好的实现系统。这篇文章从小处入手,浅析高并发的架构设计。一、 什么是热点热点分为热点操作和热点数据。1.1热点操作所谓“热点操作”,例如大量的刷新页面、大量的添加购物车、双十一零点大量的下单等都属于此类操作。对系统来说,这些操作可以抽象为“读请求”和“写请求”,这两种热点请求的处理方式大相径庭(差不多),读请求的优化空间要大一些,而写请原创 2021-02-02 11:49:01 · 360 阅读 · 1 评论 -
swagger 文档优化 knife4j 增强 Swagger
swagger 省去了程序员开发过程中拟写接口文档的时间,是团队开发必不可少的工具,原生的swagger 界面功能比较少,也不支持文档导出,业界也有不少针对swagger 文档界面优化的插件,良莠不齐,选一个功能比较强大的推荐一下: knife4j官网地址:https://doc.xiaominfo.com/knife4j/documentation/项目里增加maven 引用 <dependency> <groupId>com.github.xia原创 2020-12-17 13:55:32 · 1190 阅读 · 0 评论 -
Redis [5] Redis开放式问题
针对网上Redis常见问题的思考实际情况中 面试者不会这么提问。如有错误 欢迎私信交流1.redis为什么是key,value的,为什么不是支持SQL的?Redis 本身设计思想就是 key-value底层数据结构,数据持久化只是支持 key-valueRedis 本身方向是共享内存数据,SQL 语句更多是查找硬盘的数据。个人理解:Redis是这个名字本就是是Remote Dictionary Server的缩写。Redis的作者是antirez,最早创建Redis的目的就是用作缓存,加速原创 2020-12-03 17:39:14 · 139 阅读 · 1 评论 -
Mysql 使用UUID 作为主键的分析
前置条件Mysql innodb存储引擎一:为什么使用UUIDUUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。其目的,是让分布式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。如此一来,每个人都可以创建不与其它人冲突的UUID。UUID 便于生成,不会重复,在分布式架构的系统中,很常见,但对于使用了mysql innodb 存储引擎来说,U原创 2020-09-20 22:52:54 · 2915 阅读 · 1 评论 -
常见软件项目开发模式思考
一、软件项目在2000左右 程序员还是一种比较罕见的工作,那是的个人台式机还是当时富裕家庭的高级娱乐用品,一开始网络程序员部分前后端,PHP、JSP、ASP这些技术形成了最早的网络程序。BS 系统简单的设计文档在那时形成,同时诞生了一批技术、团队的外包公司,外包公司比较推崇敏捷开发,单具体操作起来就是一次性开发,根据合同内容,设定好开发目标,利用公司现有的技术架构,快速实现一套系统。敏捷开发的好处就是短时间内多做项目,多赚钱,对于系统的使用者来说,系统上线之后 开始用着还可以,随着时间的推移,问题暴露原创 2020-09-14 11:07:10 · 651 阅读 · 0 评论 -
合同中心设计概要
这是一个小型合同中心设计概要,适合需要电子签章的业务,满足多个业务线。多租户。SAAS 服务。设计中选择E签宝,也可以替换其他电子签章通道版本修订人备注修改时间V1.0andy初稿2020.02.03V1.1hamish接口修订2020.02.13一、 引言1.1 项目背景目前合同与订单数据耦合在一起,合同模板唯一,生成合同采用硬编码方式1.2 术语名称电子合同:根据合同模板填充数据,数据来源于业务系统或着数据库电子印章:E签.原创 2020-07-06 10:34:45 · 1425 阅读 · 0 评论 -
Redis 缓存穿透、缓存雪崩、缓存击穿、缓存抖动
redis 常见面试内容,缓存穿透、缓存雪崩 、缓存击穿一、缓存穿透:本质:查询缓存中没有的数据,流量直接到了mysql造成这种现象的情况分多种 ,可以是黑客攻击,笔者遇到过有人利用技术手段获取系统中注册手机号信息。可以是系统调用出错。也可以是数据逻辑错误。举个例子:对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。举个栗子。数据库 id 是从 1 开始的,结果黑客发过来的请原创 2020-06-15 14:31:04 · 1191 阅读 · 0 评论 -
设计模式7原则概述
Java 设计模式23种设计模式原则1.开闭原则:对扩展开放,对修改关闭实践:分模块、接口、类 方法方法重载类继承接口实现项目设计中基本都用到开闭原则的作用开闭原则是面向对象程序设计的终极目标,它使软件实体拥有一定的适应性和灵活性的同时具备稳定性和延续性。具体来说,其作用如下。对软件测试的影响软件遵守开闭原则的话,软件测试时只需要对扩展的代码进行测试就可以了,因为原有的...原创 2019-11-14 13:54:53 · 112 阅读 · 0 评论