java后台技术栈
文章平均质量分 53
java后台技术栈
zone工作室
zone工作室,致力于前沿技术研究。工作室主要成员来自腾讯、阿里巴巴等国内顶级科技公司。
展开
-
Seata源码走读分析
文章目录1、Seata2、TC3、TM4、RM5、XID1、Seata2、TC功能:算出我这个全局事务,是否是真的需要提交的。具体提交的动作,由TM来做接收你的请求,告诉你响应更通俗地讲,就是去统计计算出来,你这个全局事务到底应该怎么做3、TM功能:创建一个全局事务,并提交一个全局事务这里会去看你有没有@GlobalTransactional注解,如果有,会去真正发起一个全局事务包括发起全局事务、提交全局事务,都是transactionalTemplate来做如果没有事务的原创 2021-07-20 00:31:41 · 260 阅读 · 0 评论 -
分布式事务技术业界方案
文章目录1、两阶段提交2、三阶段提交3、TCC4、消息队列+本地事件表5、可靠消息服务6、Seata1、两阶段提交2、三阶段提交业界没有一个框架完全按照"两阶段"、"三阶段"这种方案去做3、TCC4、消息队列+本地事件表适用中小型的业务,业务不是很多,就特别好用这里图中,2开头的,其实是一个事务,做很简单,如果是springboot,直接@transactional就好了这个方案的优点是速度快,一个请求过来,只执行自己的业务,至于后面的,我就不等了,小业务很快。这里属于最终一致性原创 2021-07-19 22:03:51 · 257 阅读 · 0 评论 -
cb特性
最近需要用到cb,看到一篇对cb介绍比较详细的文章,在此分享。https://sq.163yun.com/blog/article/189804692240617472原创 2019-04-03 10:32:31 · 299 阅读 · 0 评论 -
mongodb梳理
下面做mongodb特性等简单梳理: mongodb的界面管理工具nosql manager for mongodb mysql为例的关系型数据库、mongodb对应的非关系形数据库bson是二进制的json//查询某一集合下所有的数据db.students.find();//往某一个集合中添加数据db.users.insert({"uNa...原创 2018-10-12 20:36:56 · 233 阅读 · 0 评论 -
docker的2网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式:· host模式,使用--net=host指定。· container模式,使用--net=container:NAME_or_ID指定。· none模式,使用--net=none指定。· bridge模式,使用--net=bridge指定,转载 2017-12-26 21:49:14 · 303 阅读 · 0 评论 -
高并发解决方案-负载均衡
1,什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。转载 2017-10-02 18:09:27 · 651 阅读 · 0 评论 -
redis高可用分布式集群
一,高可用高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响。 停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。(1)解决单点问题主要有2种方式:主备方式这种通常是一台主机、一台或多台备机,在正常情况下主机对外提供服务,并把数据同步到备机,当主机宕机转载 2017-10-02 17:37:16 · 2144 阅读 · 2 评论 -
虚拟分桶
背景关于数据分片讨论最多的是一致性hash,然而它并不是分布式设计中的银弹百试百灵。 在数据稳定性要求比较高的场景下它的缺点是不能容忍的。比如在Redis分布式缓存设计中,使用一致性Hash进行key分片存储,通过虚拟节点最大化降低添加或删除节点带来的影响。这里强调降低二字,即是它还是有影响的,在一般情况下我们还可以接受。但是某些场景下要求动态扩容无影响就无法满足了。上次(转载 2017-10-02 17:34:14 · 1201 阅读 · 0 评论 -
iscsi target tgt架构
tgt是用户态实现的iscsi target,而iet(iscsi enterprise target)是在内核态实现的target,tgt相比于iet来说,因为其用户态实现,方便调试,新加入一些功能等,不过性能相比iet来说要稍差一点。下面就介绍一下tgt的程序框架(略过iscsi协议解析处理部分),以便于整体把握tgt的代码,方便后续的一些修改。1.整体框架这里借用tgt官网给出的一张转载 2017-08-24 14:45:37 · 1340 阅读 · 0 评论 -
lvm卷管理和快照卷
一、LVM2简介LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauelshagen在Linux 2.4内核上实现。LVM将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以实现磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。与传统的磁盘与分区相比,LVM为计算转载 2017-08-23 17:44:51 · 913 阅读 · 0 评论 -
zookeeper的热备
【题外话】今天开了一天会的感觉。很多具体的事情都没有做。令我感到兴奋的事情,倒是有一件。我从其他渠道获取了一道网易的面试题。做起来特别有意思。题目是这样的:有一个数组A{22,34,455,332,678,334,3} 将其组成一个最大的整数。这道题的答案是 67845534334333222我是这样算的,过程如下:{34,349}1.先把数据解构,生成{22} {3,转载 2017-08-23 15:40:19 · 1771 阅读 · 0 评论 -
缓存数据一致性问题方案
1、数据实时同步失效 1.1类型:增量、主动 1.2实现方式:强一致性,更新数据库之后主动淘汰缓存,读请求更新缓存,为避免缓存雪崩,更新缓存的过程需要进行同步控制,同一时间只允许一个请求访问数据库,为了保证数据的一致性还要加上缓存失效时间。2、数据准实时更新 2.1类型:增量、被动 2.2实现方式:准一致性,更新数据库后,异步更新缓存,使用多线程技术或者...原创 2019-10-05 17:08:02 · 281 阅读 · 0 评论 -
rocketmq异步复制or同步双写
原文链接:http://www.cnblogs.com/xiaodf/p/5075167.html参考链接:rocketmq与kafkahttp://blog.csdn.net/chunlongyu/article/category/6638499在原文的基础上,进行了部分修改,但是感觉博客还是有部分错误,有时间会更新。简介官方简介: RocketMQ是一款分布式转载 2017-12-25 20:59:22 · 13484 阅读 · 1 评论 -
消息队列两种模式
Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。点对点与发布订阅最初是由JMS定义的。这两种模式主要区别或解决的问题就是发送到队列的消息能否重复消费(多订阅)1、定义JMS规范目前支持两种消息模型:点对点(point to po转载 2017-06-06 18:29:10 · 1184 阅读 · 0 评论 -
jedis基本操作
使用Java操作Redis需要jedis-2.1.0.jar,下载地址:http://files.cnblogs.com/liuling/jedis-2.1.0.jar.zip如果需要使用Redis连接池的话,还需commons-pool-1.5.4.jar,下载地址:http://files.cnblogs.com/liuling/commons-pool-1.5.4.jar.zip转载 2017-05-29 15:36:08 · 453 阅读 · 0 评论 -
jedis分布式锁
一、 Pipeline官方的说明是:starts a pipeline,which is a very efficient way to send lots of command and read all the responses when you finish sending them。简单点说pipeline适用于批处理。当有大量的操作需要一次性执行的时候,可以用管道。示例:转载 2017-05-26 19:56:20 · 1098 阅读 · 0 评论 -
redis的pipeline
Pipeline官方的说明是:starts a pipeline,which is a very efficient way to send lots of command and read all the responses when you finish sending them。简单点说pipeline适用于批处理。当有大量的操作需要一次性执行的时候,可以用管道。示例:Jed转载 2017-05-26 18:48:14 · 382 阅读 · 0 评论 -
基于golang的slice /tumbling window流处理器
针对数据量不大,但流处理业务逻辑繁多的场景,没有需要引入flink那种很重的分布式计算框架的需求而golang的协程模式,天然适合处理多流并发读的场景,因此,最近做了个小工具,基于超时队列技术实现流计算的 slice window、tumbling window本文主要分享特定场景的处理思路,有需要源码的可私聊~...原创 2019-04-24 16:09:14 · 479 阅读 · 0 评论 -
Flink 中 timeWindow 滚动窗口边界和数据延迟问题解析
多流join操作需要用到window,window的重点是窗口数据丢失问题看了一些博客,讲的不怎么清晰,这篇讲的较为清晰,在此分享。https://blog.csdn.net/xsdxs/article/details/82415450...原创 2019-03-21 18:59:12 · 1603 阅读 · 0 评论 -
java安全初始化
不安全的发布错误的延迟初始化将导致不正确的发布,如下面的程序所示。初看起来,在程序中存在的问题只有竞态条件问题。在某些特定条件下,例如当Resource的所有实例都相同时,你或许会忽略这些问题(以及在多次创建Resource实例时存在的低效率问题)。然而,即使不考虑这些问题,UnsafeLazyInitialization仍然是不安全的,因为另一个线程可能看到对部分构造的Resource实例的转载 2017-06-23 00:14:39 · 523 阅读 · 0 评论 -
双重检查锁机制
单例模式中用volatile和synchronized来满足双重检查锁机制背景:我们在实现单例模式的时候往往会忽略掉多线程的情况,就是写的代码在单线程的情况下是没问题的,但是一碰到多个线程的时候,由于代码没写好,就会引发很多问题,而且这些问题都是很隐蔽和很难排查的。例子1:没有volatile修饰的uniqueInstancepublic class Singl转载 2017-06-22 23:44:45 · 3999 阅读 · 0 评论 -
AQS解析
摘要: 提到JAVA加锁,我们通常会想到synchronized关键字或者是Java Concurrent Util(后面简称JCU)包下面的Lock,今天就来扒一扒Lock是如何实现的,比如我们可以先提出一些问题:当我们通实例化一个ReentrantLock并且调用它的lock或unlock的时候,这其中发生了什么?如果多个线程同时对同一个锁实例进行lock或unlcok操作,这其中又发生了什么转载 2017-06-11 12:52:30 · 585 阅读 · 0 评论 -
分布式的两阶段提交
一、二阶段提交算法描述 在分布式系统中,事务往往包含有多个参与者的活动,单个参与者上的活动是能够保证原子性的,而多个参与者之间原子性的保证则需要通过两阶段提交来实现,两阶段提交是分布式事务实现的关键。 很明显,两阶段提交保证了分布式事务的原子性,这些子事务要么都做,要么都不做。而数据库的一致性是由数据库的完整性约束实现的,持久性则是通过commit日志来实现的,不是由两阶段提交转载 2017-06-10 01:15:20 · 523 阅读 · 0 评论 -
常用的分布式事务解决方案(1)
事务是由一组操作构成的可靠,独立的工作单元。ACID:Atomicity(原子性)Consistency(一致性)isolation(隔离性)durability(持久性)难点:高度并发资源分布大时间跨度本地事务:事务由资源管理器(如DBMS)本地管理优点:支持严格的acid属性可靠高效状态可以只在资源管理器中维护应用编程原创 2017-05-09 14:44:35 · 1047 阅读 · 0 评论 -
阿里的blink
蒋晓伟认真而严谨,在加入阿里之前,他曾就职于西雅图的脸书,负责过调度系统,Timeline Infra和Messenger的项目。而后在微软的SQL Server引擎担任过Principal Engineer,负责关系数据库的架构工作。2014年加入阿里以后,作为阿里搜索事业部资深搜索专家,他负责搜索工程的数据团队。在7月19-21日20:00-21:30 的首届阿里巴巴在线技转载 2017-03-02 18:02:50 · 4277 阅读 · 0 评论 -
scala的模式匹配和case class
模式匹配的简介 scala语言里的模式匹配可以看作是java语言中switch语句的改进。 模式匹配的类型 包括:常量模式、变量模式、构造器模式、序列模式、元组模式以及变量绑定模式等。 常量模式匹配 常量模式匹配,就是在模式匹配中匹配常量啦。objectConstantPattern{ def main(args转载 2017-02-23 16:08:25 · 389 阅读 · 0 评论 -
Scala:AnyRef和AnyVal
AnyRef是所有引用类型的基类。除了值类型,所有类型都继承自AnyRef 。AnyValAnyVal 所有值类型的基类, 它描述的是值,而不是代表一个对象。 它包括 9 个 AnyVal 子类型:Scala.Double scala.Float scala.Long scala.Int scala.Char scala.Short sc转载 2017-02-23 15:09:12 · 940 阅读 · 0 评论 -
事务的并发控制
事务的并发控制 9.1 信号量:依赖于程序员;不适当的使用会死锁。分布式环境中很难实现,必须保持信号量数据的绝对一致性。 管程:编译器支持的编程语言结构。编译器依靠共享内存实现信号量,没有共享内存,就不能使用管程。 对事务的调度要保证对共享数据的执行效果与其串行调度等价,服务器可通过串行访问数据项来实现串行等价。 锁:串行结转载 2016-12-28 16:15:47 · 1205 阅读 · 0 评论 -
命名服务
命名服务 8.1 名字OS负责实现各个对象(如进程、信箱、结点、I/O设备、文件、地址)之间的消息传递,这就要求访问的系统对象都有一个名字。 一个名字(标识符),就是标识一个对象的一串符号(位或者字符)。名字和对象之间对应是一个引用关系,通过名字对对象进行引用和标识。对于计算机本身,用数字标识符(二进制数最适合表示)。但用户不能高效转载 2016-12-28 14:54:29 · 1209 阅读 · 0 评论 -
任务分配与负载平衡
任务分配与负载平衡 6.1 任务分配 (task allocation)若干个模块构成一个任务,一个任务是单一的处理实体。任务分解:把一个提交的任务划分成若干个独立的,具有最小IMC的模型。IMC:每对模块间的数据传递。IPC:处理机间的通信。 任务划分:粒度大,降低并行度,粒度小,进程切换和通信的开销就会增加。划分方法:水平或垂直划分:在给定的任务优先图中水转载 2016-12-28 14:29:57 · 4792 阅读 · 0 评论 -
进程与处理机管理
进程与处理机管理 进程和线程进程都包括一个执行环境,其中有一个或多个线程。一个线程是操作系统中对一个处理的抽象。 创建新进程: (1)选择目标机;(2)创建一个新的执行环境;(3)在执行环境中创建一个线程; 进程和线程的区别:线程的创建和管理开销小,线程间共享资源比进程间共享资源更有效地实现。 同一个进程的多个线转载 2016-12-28 14:05:09 · 1367 阅读 · 0 评论 -
资源管理
资源管理 4.1 资源共享 资源共享的方法:1 数据迁移 整个文件 部分文件 通过文件或数据库的 水平分割、垂直分割 但分割较麻烦。 2 计算迁移传递计算比传递数据更有效 3 作业迁移隐式: 作业迁移最终由系统实现;显式: 用户指明作业如何迁移; 4.2 资源管理局部集中管理分散式管理转载 2016-12-28 14:00:58 · 515 阅读 · 0 评论 -
分布式计算机系统概要
下一步的技术发展很难准确预测,我们要在网络、分布式环境下开发,需要掌握分布式计算机系统的原理,也需要了解他们的实现原理。分布式操作系统是为分布式计算机系统配置的一种操作系统。 分布式系统需要与集中式系统完全不同的软件。 分布式计算机系统第一, 从硬件角度来讲,各个计算机都是自治的;第二,从软件角度来讲,用户将整个系统看作是一台计算机。这转载 2016-12-28 13:55:18 · 2923 阅读 · 0 评论 -
odps随笔01
odps目前只开放了sql功能。不过哪怕是mr功能开放了后,sql应该还是最主要的开发方式。sql相对而言,开发难度低,容易上手,调试方便,实在是开发测试必备工具。今天我们来聊聊odps的sql。估计会看到这篇帖子的人基本都是搞过开发的,写的sql是得心应手。不过odps的sql和标准的sql还是有一些区别的,这里一一道来。如果中间有遗漏的,也麻烦跟帖补充。关键字odps的关键字和转载 2016-10-17 16:52:04 · 3452 阅读 · 0 评论 -
分布式计算概述
分布式系统:在 网 络 计 算 平台 上 开 发、 部 署、 管 理 和 维 护 以 资 源 共 享 和 协 同 工 作 为 主 要 应 用 目 标 的 分 布 式 应 用 系 统。分布式系统的主要特征:包含任意个数的系统进程和用户进程体系结构模块化,它由数目可变的多个处理部件组成通过共享通信结构上的报文传递进行通信,进程之间的报文传送存在延原创 2016-09-21 22:25:12 · 1508 阅读 · 0 评论 -
facade模式
设计模式--外观模式Facade(结构型):1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统的外观模式设计。2.转载 2017-06-13 19:00:06 · 1268 阅读 · 0 评论 -
composite模式
设计模式(七)组合模式Composite(结构型)1. 概述在数据结构里面,树结构是很重要,我们可以把树的结构应用到设计模式里面。例子1:就是多级树形菜单。例子2:文件和文件夹目录2.问题我们可以使用简单的对象组合成复杂的对象,而这个复杂对象有可以组合成更大的对象。我们可以把简单这些对象定义成类,然后定义一些容器类来存储这些简单对象。客户端代码必须区别对转载 2017-06-12 14:58:19 · 377 阅读 · 0 评论 -
命令模式
设计模式 ( 十三 ) 命令模式Command(对象行为型)1.概述 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使得请求发送者与请求接收者消除彼此之间的耦合,让对象之间的调用关系更加灵活。 例子1:电视机遥控器转载 2017-06-12 14:08:03 · 509 阅读 · 0 评论 -
建造者模式(builder模式)
1. 概述 在软件开发的过程中,当遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。 例子1:买肯德基 典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童餐中可以是不同的,但是组合转载 2017-06-12 11:17:30 · 1186 阅读 · 0 评论 -
桥接模式和适配器模式的区别
很多时候经常容易把桥接模式和适配器模式弄混。那什么时候用桥接,什么时候用适配器呢 ?共同点桥接和适配器都是让两个东西配合工作不同点出发点不同。 1)适配器:改变已有的两个接口,让他们相容。 2)桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。 所以说,如果你拿到两个已有模块,想让转载 2017-06-12 00:31:37 · 1385 阅读 · 0 评论