Distributed&High Concurrency
文章平均质量分 86
分布式高并发相关
cuiyaonan2000
躬身入局,高在造势。 器不锐,可磨。 术不静,可学。 道不强,可悟。 法不高,可练。 时不逢,可待。谋事在人,成事在天。
展开
-
ShardingJdbcⅡ
在前文的基础上继续梳理一下分片的相关信息.基于shardingsphere-sharding-api:jar:5.2.1的源码,感觉ShardingJdbc的版本变动频繁且比较大cuiyaonan2000@163.com。原创 2022-11-30 16:14:08 · 839 阅读 · 0 评论 -
ShardingJdbcⅠ
相同结构的水平拆分数据库(表)的逻辑名称,是 SQL 中表的逻辑标识。例:订单数据根据主键尾数拆分为 10 张表,分别是t_order_0到t_order_9,他们的逻辑表名为 t_order提供接口让应用开发者自行实现与业务实现紧密相关的分片算法,并允许使用者自行管理真实表的物理分布。标准分片算法: 用于处理使用单一键作为分片键的=、IN、、>、=、.........原创 2022-08-25 15:12:35 · 928 阅读 · 0 评论 -
Some Questions About Sharding
解决大数据的问题,只有一个方案就是分片.传统数据库跟非传统数据库的最主要的区别是:谁天生就能进行分片.但是针对分片同时也会有一些事项需要注意,这需要我们在设计的时候考虑cuiyaonan2000@163.com。原创 2022-08-25 10:57:25 · 410 阅读 · 0 评论 -
Jvm参数
如标题,这里主要考虑根据不同的环境,如何来设置Jvm的参数信息cuiyaonan2000@163.com。原创 2022-07-19 10:36:54 · 268 阅读 · 0 评论 -
ThreadLocal&&Reference
序言目前ThreadLocal使用场景最多的就是多数据源的切换了.我们在使用ThreadLocal在不同线程之间切换数据源的时候要其实有很多知识点需要注意cuiyaonan2000@163.com线程的状态线程入门的知识,但是在后续的设计中会应用到cuiyaonan2000@163.com系统线程的状态新建(NEW) 就绪(RUNNABLE) 运行(RUNNING) 阻塞(BLOCKING): sleep,wating,blocking 死亡(DEAD)Java线程状态原创 2022-05-17 16:16:34 · 536 阅读 · 0 评论 -
Reactor Thread Model
序言WebFlux基于Reactor线程模型,WebFlux又是AIO的实现.同时Netty也是使用的Reactor线程模型.所以有必要了解下Reactor线程模型,以应对多种不同技术的变更cuiyaonan2000@163.com根据大神Doug Lea 在 《Scalable IO in Java 》中的介绍,Reacotr模型主要分为三个角色(如下的角色都是线程,只是他们的作用域不一样cuiyaonan2000@163.com)Reactor:把IO事件分配给对应的handler处原创 2022-03-07 17:22:55 · 496 阅读 · 2 评论 -
InPut And OutPut
序言我们知道Spring在2017年下半年迎来了Webflux,Webflux的出现填补了Spring在响应式编程上的空白,Webflux的响应式编程不仅仅是编程风格的改变,而且对于一系列的著名框架,都提供了响应式访问的开发包,比如Netty、Redis等等。传统的Web框架,比如说:struts2,springmvc等都是基于Servlet API与Servlet容器基础之上运行的,在Servlet3.1之后才有了异步非阻塞的支持。而WebFlux是一个典型非阻塞异步的框架,它的核心是基于Rea原创 2022-03-04 16:12:08 · 353 阅读 · 0 评论 -
Java: Fork/Join使用
序言我们在Jdk8中使用Stream Api 和 CompletableFuture 的时候知道 他们都默认使用了ForkJoinPool线程池. 故此介绍下Fork/Join的框架.如题此框架是在Jdk7中引进的cuiyaonan2000@163.com简介Java.util.concurrent.ForkJoinPool由Java大师Doug Lea主持编写,它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。我们举个例子:如果要计算一原创 2022-03-02 17:52:13 · 941 阅读 · 0 评论 -
ThreadPool
序言线程池经常用,但是很少自己去创建,程序中一般使用默认的.默认的线程池可能会让你失望,因为Java默认线程池只有1个,且只要你不在你代码中显示的指定,那都是共享的一个线程池,且线程池内的线程数量就是你当前机器的CPU内核数cuiyaonan2000@163.comForkJoinPool.commonPool它的作用范围非常的广大.所有的java程序类默认的线程池,有且只有1个,即大家共享的.比如他们俩都是默认使用了ForkJoinPool.commonPool作为线程池,当没有指原创 2022-01-13 11:34:38 · 647 阅读 · 1 评论 -
JAVA:响应式编程
序言通常我们编写的Java程序,都是一行执行完了,再执行下一行.上一行没有执行完,下一行就不会执行.这种就是指令式编程.另外一种就是响应式编程,既可以满足当前一行命令还没有执行完时,下一行命令就可以启动执行.当需要上一行命令的结果时再去获取相关值(或者上一行结果在执行完后主动的告诉我们)cuiyaonan2000@163.comCompletableFuture在Java8 之前就有Future提供了响应式编程的实现方式.但是有一些缺陷.所以提供了CompletableFuture,原创 2022-01-12 17:10:45 · 5440 阅读 · 0 评论 -
Launch Seata Searvice
序言打个桩原创 2021-07-14 16:09:02 · 236 阅读 · 0 评论 -
Build SpringCloud Projects With Seata
序言Jta+Atomikos 是传统的多数据源的分布式处理方案.而Seata是分布式的处理方案.且像阿里自己说的双11的抢购都是它解决的.官网:https://seata.io/zh-cn/docs/overview/what-is-seata.html事务模式seata的事务类型支持的种类有:AT:主打模式 TCC SAGA XAAT模式因为AT模式即阿里的TCC模式,所以AT会对我们的代码进行一定的代理,来实现自己的分布式处理.所有多少会对我们的代码框架有些...原创 2021-07-14 16:06:04 · 221 阅读 · 0 评论 -
The Solution Of Distributed Transaction
序言整理下分布式事务的解决方案2PC2PC(two-phase commit protocol)即两阶段提交.2pc是一个非常经典的强一致、中心化的原子提交协议。中心化的意思就是,皇权集中于一人之手,其它的都是参与者.比如kafka集群.所有的信息都放置在zookeeper上,kafka只是提供服务. 同理2PC中有个协调者,用于管理所有的参与了分布式事务的应用程序cuiyaonan2000@163.com二阶段提交是一种思想,基于该思想,有XA协议和TCC协议2PC注释2P原创 2021-07-06 11:33:25 · 178 阅读 · 0 评论 -
Distributed Transaction On Spring Boot With Atomikos
序言基于springboot的分布式事务的解决方案整理原创 2021-07-09 15:38:43 · 218 阅读 · 0 评论 -
Kafka batch processing
序言批量处理的添加域参数设置,也算是kafka调优的一种切入点cuiyaonan2000@163.com添加批处理来提升任务处理效率。 具体针对批量处理的一些参数设置,来进一步优化处理任务的效率。(kafka的服务的参数配置种类很多,有很多参数配置的技术点还是挺深的,但是我们可以根据批处理的参数设置为切入点,熟悉了解全面的参数设置cuiyaonan2000@163.com)Batch Processing On Consumer批处理的参数设置spring: kafka:原创 2021-07-05 15:02:58 · 1557 阅读 · 0 评论 -
AOF&RDB
序言主要用于查看不同备份模式可以调优的一些方式.RDB: Redis服务器在规定时间内将内存中的数据保存到指定路径的文件中,服务器重启的时候直接将RDB文件读取到内存中 AOF:Redis服务器以日志的形式追加所有的REDIS操作,服务器重启的时候读取AOF文件依次执行一遍.关于RDB最主要的问题是在备份的时候.RDB备份需要fork一个线程处理,所当处理大批量的备份的时候会影响Redis服务的效率.而AOF是可以支持大批量的命令最佳且不影响Redis服务的效率cuiyoanan2000@163原创 2021-06-24 14:54:20 · 476 阅读 · 0 评论 -
Redis Script
序言redis提供的执行脚本的几个基础命令Redis Eval 命令redis 127.0.0.1:6379> EVAL script numkeys key [key ...] arg [arg ...] script: 参数是一段 Lua 5.1 脚本程序。脚本不必(也不应该)定义为一个 Lua 函数。 numkeys: 用于指定键名参数的个数。------即redis中的key的个数cuiyaonan2000@163.com key [key ...]: 从 EVAL 的原创 2021-06-23 17:37:39 · 1835 阅读 · 0 评论 -
Lua语法
序言研究一下跟redis整合用.文本格式格式1我们可以将 Lua 程序代码保存到一个以 lua 结尾的文件,并执行,该模式称为脚本式编程,如我们将如下代码存储在名为 hello.lua 的脚本文件中:print("Hello World!")print("www.runoob.com")#执行该文件并显示结果$ lua hello.luaHello World!www.runoob.com格式2我们也可以将代码修改为如下形式来执行脚本(在开头添加:#!/us.原创 2021-06-23 17:08:00 · 218 阅读 · 0 评论 -
Redis Cluster的问题
序言这里主要讨论解决Redis Cluster集群环境下的高并发问题.问题Redis的命令是串行执行的,但是在集群环境下命令的顺序是不能保证的,不同线程之间对同一个KEY的操作会有嵌套,造成数据不准确.如果是Redis服务器是不是集群,则可以使用Multi,Exec,Watch的命令组合来解决原子性问题.同时也可以根据业务情况独立一个Redis服务器,使用Multi,Exec,Watch来解决该问题(这也不失一种解决方案,毕竟分布式锁更消耗性能cuiyaonan2000@163.c.原创 2021-06-23 14:48:30 · 365 阅读 · 0 评论 -
漏桶算法与令牌桶算法
序言此两种算法是服务降级的一种实现.常用于限制我们的对外服务的QPS,即控制对外服务在单位时间内所能处理的请求数量.保护我们的服务不会被海量请求给崩盘cuiyaonan2000@163.com漏桶算法(有点像Kafka,大批量的数据吞吐)漏桶算法的主要思路为:在nginx层与controller层加一层(即漏桶层), 用于接收nginx收到的大批量的请求,接收的请求的速度是没有控制的,但是如果超过了漏桶层的最大容量则直接抛弃该请求. 漏桶层将大批量的请求以特定的速度转发给co..原创 2021-06-21 19:16:18 · 5357 阅读 · 2 评论 -
关于服务器在处理性能上的几个指标
序言 现在在技术选型,尤其关注软件的能够提供的QPS,当然这也是必然的.所以整理下不同服务之间的应用级别QPS QPS(是每秒查询率) = 并发数 / 平均响应时间 例如:如果一次性可以处理100个请求,每个请求耗时100毫秒,则qps = 1000 如果一次性可以处理50个请求,每个请求耗时200毫秒,则qps = 250...原创 2019-09-05 14:32:11 · 2125 阅读 · 0 评论 -
程序监控与调优---------Java篇
梳理下,针对java工程的监控与对应的调优.主要分为两部分,第一部分是基础知识预备(这样才有思路去调优啊~),第二步是是监控工具的使用(针对不同的监控对象,会选择一个监控工具).另外欢迎骚扰。......原创 2019-10-31 17:11:48 · 1106 阅读 · 0 评论