- 浏览: 13343 次
- 性别:
- 来自: 北京
最新评论
文章列表
[置顶] Base: ACID外的另外一种选择
- 博客分类:
- 事务管理
Base: ACID外的另外一种选择
在分区数据库中,为可用性牺牲一定的一致性能够显著提高可扩展性
DAN PRITCHETT, EBAY
在过去的十年中,Web应用变得日益流行。无论您是为最终用户构建应用程序还是为应用程序开发人员(即服务),您希望您的应用程序是最可能被广泛采用的,而广泛的应用将会使事务处理量增长。如果您的应用程序依赖于持久性,那么数据存储很可能将成为你(系统)的瓶颈。
支付宝tcc架构困惑了我很久。感谢https://github.com/changmingxie/tcc-transaction提供的源码,可惜github中文档较少,对此,我整理了一份类图文档,方便对程序结构进行梳理:
JVM性能监控常用命令
- 博客分类:
- Java虚拟机
一、ps -ef | grep java
二、jps -l
注:6417和29076是我们关心的LVMID,即虚拟机进程ID
三、jstat -gc 6417
说明:
S0C:Current survivor space 0 capacity (KB).
S1C:Current survivor space 1 capacity (KB).
S0U:Current survivor space 0 utilization (KB).
S1U:Current survivor space 1 utilization (KB).
EC: ...
个人整理的Java并发涉及的技术关系图:
大型系统架构模型的理解
- 博客分类:
- 互联网技术
一、简单模型:CDN、Redis,索引,原理就是:“空间换时间”、“高速设备提升性能”
二、复杂模型:
(一)、“数据并行度”和“数据一致性”之间的取舍。
1、单机数据库:ACID中的I其实就是“一致性”和“并行性”的取舍结果:C要求高,则加锁,并行度低;C要求低,则并行度高。
2、分布式系统:CAP理论中,C一致性如果理解为最强一致性,则意味着在某个一个特定时刻,系统间/内存磁盘间完全一致;P表示一个需要多个分区;A表示即使一个分区坏掉依然可以提供服务。具体场景如下:
(1)、分布式两个系统S1、S2, ...
〇、信息来源:
1、http://itjiehun.iteye.com/blog/1826029
2、http://www.360doc.com/content/13/0521/13/9437165_287009615.shtml
3、http://blog.sina.com.cn/s/blog_4c925dca0102vdhl.html
4、http://www.tuicool.com/articles/zqyYrm
一、MetaQ是什么?
(一)、师从kafka ,是一款高可用,可无限水平扩展的消息中间件。核心为:
1、他使用拉模型的 ...
一、核心配置:
二、对比Hibernate:
1、Mybatis原生态的SQL,方便进开发前进行调优,也可以很容易取实现调优;而hibernate自己封装尽管更OO化,但需要打印输出SQL才方便找到真正执行脚本,而且SQL由于是自动生成,不一定容易变动。
2、Mybatis在动态SQL上更为灵活
3、Hibernate数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL。
4、Hibernate生成的对象为代理对象,MyBatis生成的对象是否是代理对象呢?
分布式事务如何保障一致性
- 博客分类:
- 互联网技术
一、2PC:
通过2PC,但需要丧失CAP的A特性,如果部分服务不可用,则无法实现整个事务提交
二、Paxos或Zookeeper:
(一)、Paxos:
偏向C,弱化A;但也要求至少N+1结点同时操作,在可用性(性能和吞吐量)方面也打了不少折扣。主要应用于同时两个人要改一件事情,到底以谁的为准。Paxos的游戏场景:
甲乙两个客户端分别提交100、200两个事务,其中100需要把数据库比如学生姓名改为张三,200事务改成李四,后台有三个数据库服务器A、B、C。时间顺序为:
1、100咨询张三A、B、C是否可以预提交,A、B口头答应,C没有答 ...
大型系统架构核心的理解
- 博客分类:
- 互联网技术
大型系统架构核心:一点、一平行、一纵切
〇、点:
提升快资源访问比例,将读较多的放在性能较快设备中,如使用Redis、Memcache提升性能。这个在单机也有应用比如索引
一、平行提升并行性
1、在单机中,一般通过多线程实现。但并行性带来的问题是共享资源访问,避免共享资源访问的原则就是通过锁,数据库的核心即ACID中的CI就是通过锁来实现,Java同步关键字也是为了解决这个问题。
2、在多机中,解决并行的方法就集群部署,又分为两种:
1、Master-Work模式:平行的负载均衡调度策略,如Ngix、F5均为解决该问题,而Ngix和F5实现负载 ...
关于单机数据库ACID的理解
- 博客分类:
- 事务管理
一、在不使用MVCC情况下,隔离性、锁之间的关系:
隔离级别
并行级别
锁实现
Seriallizable
读读并行
跨越千年的RSA算法
- 博客分类:
- PKI/CA
个人心得: 核心定律为费马定律:当 n = p · q(p,q为质数) , m = (p - 1)(q - 1) ,a为小于n任意自然数,则a1+m mod n = a mod n = a RSA扩展:当e 乘以 d 的结果除以 m 余 1时,ae*d mod n = a mod n,即ae*d mod n = a,应用于运 ...
企业消息系统
Java Message Service是由Sun开发的,它为 Java程序提供一种访问企业消息系统的方法。在讨论JMS之前,我们分来析一下企业消息系统。 企业消息系统,即面向消息的中间件(MOM),提供了以松散耦合 ...
xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意脚本,实现对用户游览器的控制。
xss攻击可以分成两种类型:
非持久型攻击
持久型攻击
下面我们通过具体例子,了解两种类型xss攻击。
1.非持久型xss攻击
顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击
分布式事务--我们是否真的需要
- 博客分类:
- 事务管理
我们不断的拆分schema,说了为了下一步的分库做准备,但是由此带来的代价也是显而易见的,我们的分布式事务在不断的增多。我们期望利用分布式事务来保证数据的一致性,但是其带来的影响也是不容忽视的。
摘录他人语:分布式事务提供的ACID保证是以损害系统的可用性、性能与可伸缩性为代价的 。只有在参与分布式事务的各个数据库实例都能够正常工作的前提下,分布式事务才能够顺利完成,只要有一个工作不正常,整个事务就不能完成。这样,系统的可用性就相当于参加分布式事务的各实例的可用性之积,实例越多,可用性下降越明显。从性能和可伸缩性角度看,首先是事务的总持续时间通常是各实例操作时间之和,因为一个事务 ...