分布式系统
文章平均质量分 54
DearSil
4年项目实战经验,头未秃,人未强,干就完了
展开
-
动态扩容缩容的分库分表方案
停机扩容这个方案就和停机迁移一样,将原有的服务停止,跑数据迁移程序,将老的数据导入到新的数据库中。原创 2023-06-12 11:28:09 · 186 阅读 · 0 评论 -
线上环境单体数据库过度分库分表
线上现在又一个单库单表的系统,在线上跑,假设表中有600万的数据,此时在本地已经部署好了三天服务器,并且通过数据读取系统将所有的数据已经迁移到本地数据库,需要将线上的单库系统切换到分库系统。原创 2023-06-12 10:24:07 · 125 阅读 · 0 评论 -
数据拆分之分库分表
综上所述,现目前可以去做考量的就是sharding-jdbc和mycat,这个都是可以考虑使用,sharding-jdbc这种client层方案的优点就是不用部署,运维陈本地,但是如果遇到升级啥的,就需要各个系统重新升级版本在发布mycat这种proxy层方案的优点在于需要部署,自己及运维一套中间件,运维成本高,但是好处在于多个各项目是透明的,如果遇到升级之类的,都是自己的中间件哪里去升级就可以。原创 2023-06-11 15:07:28 · 54 阅读 · 0 评论 -
高并发系统架构设计
将一个系统拆分为多个子系统,用Dubbo来搞,然后每个系统连接一个数据库,这样本来就一个库,现在多个数据库。原创 2023-06-11 11:48:03 · 124 阅读 · 0 评论 -
分布式系统-分布式事务
其实在一个项目中,需要用到分布式事务相关的地方还是比较少,因为通过上面的几个方案来看,任何一个地方使用分布式事务,都会导致相关位置的代码复杂度提升十倍,同时会极大的降低系统的吞吐量以及性能所以在线上其实99%的分布式事务场景,尽量不要做分布式事务,一般来说会使用监控(当问题产生时,发送邮件,短信等),记录好日志(一旦出错,记录好完整的日志),事后快速的定位,排查和出解决方案,修复数据等。原创 2023-06-11 11:21:22 · 61 阅读 · 0 评论 -
分布式Session实现方案
这个其实是很方便的,就是使用Session的代码和以前一样,还是基于Tomcat原生的session支持即可,然后就是用一个叫Tomcat RedisSessionManager的东西,让所有部署的Tomcat都将Session数据存储到Redis中。搞一个类似上面的配置可,使用RedisSessionManager,然后指定Redis 的host 和 port就可以了。还可以用上面这种方式,基于redis哨兵支持的redis高可用集群来保存session数据。可以再Tomcat 配置文件中配置一下。原创 2023-06-09 09:37:27 · 117 阅读 · 0 评论 -
分布式系统----分布式锁
zk分布式锁,其实可以做的比较简单,就是某个节点尝试创建临时的znode,此时创建成功,就获取了这个锁,这个时候别的客户端来创建锁就会失败,只能注册个监听器监听这个锁,一旦释放锁就是删除掉这个znode,一但释放掉就会通知客户端,然后有一个等待着的客户端就可以重新加锁。另外一点就是,如果redis获取锁的那个客户端BUG或者挂了,那么只能等待超时时间之后才能释放锁,而如果ZK的话,因为创建的是临时的znode,只要客户端挂了,那么znode就没了,此时就自动释放锁。原创 2023-06-03 10:19:03 · 59 阅读 · 0 评论 -
分布式系统介绍
分布式系统分为两种,一种是底层相关的分布式,涉及到底层的一些架构,存储,算法等,另一种是分布式业务系统,把原来用java开发的一大块系统,拆分成多个子系统。原创 2023-05-28 09:49:46 · 52 阅读 · 0 评论