`
herman_liu76
  • 浏览: 96598 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论
文章列表
用AOP与Threadlocal实现一个mini的TCC事务框架 TCC是处理分布式事务的一种技术,每个服务提供者提供TRY/CONFIRM/CANCEL三个接口,分别对应资源锁定,提交,取消操作。看到github上有些复杂完善的TCC框架,本着简单用AOP与ThreadLocal来做一个简单的框架,验证下自己的想法是否可行,同时练练手。 其中的TCC三调用的方法切换,以及考虑后续要使用try返回值处理,本人采用了**一种投机取巧的方式**来实现。 ## 一、主要目标 只考虑几个简单的目标 ### 1. TCC调用的关系信息 每个TCC服务调用一般都要包装一下,而且要先定义好谁是TR ...
    **包含广义数据库**:rocketmq(补在最后)-mysql-mongodb-hbase-lucene(ES)-redis,业务数据结构与文件系统存储两方面。     第一次看数据如何存储到文件中还是看rocketmq时(也可以看成某种数据库),它的存储功能里是顺序写消息文件,又有线程给数据建索引文件,文件中前一块是一个个固定字节的hash-slot,后一块是固定字节长度的消息地址数据的节点,文件们接在一起。通常内存中的结构,比如hashmap,树都是相对简单的,指针就是内存地址,有JVM帮你分配和回收。但文件里的就不一样了,考虑数据占用,所在文件与偏移量等。长度,占用与回收等更复 ...
    分析过不少中间件产品后,自己也设计过产品后,也需要在更高的高度上总结一下。本文先总结了一下核心类的定义与主要的设计特点,再进一步用druid,rocketmq,spring-jms等源码的核心类进行说明(包括启动/停止),之后还 ...
    这是我第一次做java技术比较全面和复杂的系统,当时刚从事互联网开发,它与传统单机增删改查的Web应用差别很大,那只是业务复杂。当时除了学习很多工具技巧外包括maven/git使用都才入门,线程处理的相关技术整合使用 ...
前言:     本文目的:     一个复杂的中间件是如何从整体上分模块以及设计核心类之间关系     一些重要场景的设计分析与设计模式使用     有哪些抽取的公共模块,公共底层的东西及如何重用 一、简介:     RocketMQ是一款分布式、队列模型的消息中间件,是阿里巴巴集团自主研发的专业消息中间件,借鉴参考了JMS规范的MQ实现,更参考了优秀的开源消息中间件KAFKA,实现了业务消峰、分布式事务的优秀框架。     产品基于高可用分布式集群技术,提供消息订阅和发布、消息轨迹查询、定时(延时)消息、资源统计、监控报警等一系列消息云服务,是企业级互联网架构的核心产品。MQ 历史超 ...
## 1、前言 最近写一个Java处理工具,是一个springboot的非web项目,正好借这个机会总结一下自己的经验,当开发一个Java应用时,应该全局考虑哪些方面,包括如何划分功能包,如果建立对象关联,以及如果串起流程;另一方面在这个过程中,作为喜新厌旧的程序员,全面应用Jdk8的新特征,比如其中的语法糖还是蛮甜的。 ## 2、类划分功能包 web项目是很多人接触最多的项目,与工具项目有相似点,也有不同点。一般的单体的web项目通常的包,表面上按这样划分: 多层次业务模块->controller->service->dao这么几层。而从实现了一个请求的单向处理过程看 ...
### 目的 之前写了一个mini-tcc的测试springboot,想到在自己的windows弄个docker试试,以前在centos上装过docker,很久没玩了。这次写的这个过程基本上从网上查方法实现的,没啥新意,本没必要写出来,不过在这个过程中也碰到一些坑,而且自己写笔记记录一遍印象深,所以写一篇操作过程。 引用> 整体过程:你提交代码到仓库,如果是getlab,使用webhook自动触发拉取,不是的话就配置cron表达式定时构建,jenkins拉取到代码后,需要进行构建,测试,打包,一系列操作,这是最基本的,姑且认为这是持续集成CI,然后需要将镜像push到镜像仓库,然后远程 ...
`最近一个项目用的技术比较新,整理一些相关的知识,主要是领域设计与saga分布式事务处理,还有引申到cqrs与基于api优先开发。网上的知识比较杂,所以所这些相关的汇总一下,红色粗体是自己的思考。` 是无法嵌 ## `1. 微服 ...
​ 最近在学习k8s与serviceMesh技术时,由于发现网上内容概念太多,太乱,太细,没连贯性,很多文章就是COPY很多基本知识,与我期望的认知过程不符合,不仅想知道怎么安装使用用,还想知道当初是怎么想到超这个方向发展的,以及大概技术可行性。所以写这样一个学习笔记。不讲安装,不讲demo,只是整合一些知识点,并理清相关的概念与关联,形成一个知识框架方便记忆与使用。        正好看到这么一篇文章“关于整体性学习”https://www.jianshu.com/p/1019549f256b,与我想法不谋而合,我的目的就是建立这么一个基础的知识框架。 ​ 因为水平有限,有些知识点还是自己猜 ...
1、前言     JMS即Java消息服务,面向消息中间件的API。本文研究过源码,试着分析一下如何从基本的使用方式,到整合进spring的方式的思考,来提高自己的系统设计能力。     本文只分析消息接收处理过程,话说spring-jms是整 ...
# 目的 aop功能是spring的核心功能之一,本文分析一下作者的设计思路。 之前写过一些源码分析,发现写的太细,代码太多根本不方便记忆,所以这次简单的写一写,重点是思路。 # 一、先上结构图         这个图左上的 ...
   最近无法回沪,在学习某团的2019技术年货,除了不断提高自己的水平外,这些年也没少花精力来提高团队的整体开发水平,想写写经验与教训。     一方面作为一个团队,只有共同做好了项目,才有钱拿;另一方面,如果有能力,通过指导别人,即有成就感,同时也找到共同兴趣的人相互学习;另外,如果其它人做的太差,作为开发接手后心里估计要骂人,作为负责人也是压力山大。    我很长时间一直在一个公司做客户的信息系统,即作为架体与设计,也是核心部分的开发,同时也是项目负责人。从一开始就注重团队整体水平与能力的提高,有过以下经历: 一、幻想大范围推广自己的经验    06年第一个ASP的项目后,刚参与一个 ...
#  前言 ​ 刚看到Stream的功能是对接mq产品,以为就是包装一些mq产品接口,实现自动装配后统一使用。但看了一个简单的demo,是使用rabbitMq产品的binder,还有输入输出接口方法通过配置,来对应不同的mq产品。所以作者实现的功能是在自己的channel与mq产品之间做了一个binder,这样方便的改变配置就使用多个mq,也可以方便的换不同的mq。 ​ 但是这些stream的channel如何被实现的,实现类是什么,binder又是如何加载进来的,又是如何通过binding操作把两者绑在一起的?什么时候绑的?都值得了解一下。于是简单浏览了源码,并基于一个rabitmq的de ...
# 一、dubbo协议的设计 ​ 先从业务开始,思考设计协议。 ## 1. 从rpc到remote ​ dubbo的目标是:一个接口方法的动态实现了远程方法调用,让调用者感觉与本地调用一样。既然是远程调用,涉及到用什么协议把调用数据发过去,以及接收方按这个协议解析出请求,进行处理后,用这个协议再返回结果。 对于rpc要做的事情有: - 调用方要做的事情有:产生一个包含调用数据的DubboInvoker,并且要用一个传输工具把这个发过去。 - 被调用方应该早就做好的事情:把自己所拥有的接口与实现,分别转换为DubboInvoker:service(key:value),存在map中,另 ...
补:     最近回看了一下文章,由于间隔了一段,写过的东西都忘记了。所以需要一个好记的,简洁的,整体的东西来说明这一切,在大脑中形成索引框架,故加一些知识点。 ---------------------------------- BEGIN 补---------------------- ...
Global site tag (gtag.js) - Google Analytics