分布式领域CAP理论

分布式领域CAP理论具体如下:
Consistency(一致性):数据一致更新,所有数据变动都是同步的;
Availability(可用性):好的响应性能;
Partition tolerance(分区容错性):可靠性;

定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。


关系数据库的ACID模型拥有 高一致性 + 可用性,很难进行分区:
Atomicity原子性:一个事务中所有操作都必须全部完成,要么全部不完成。
Consistency一致性:在事务开始或结束时,数据库应该在一致状态。
Isolation隔离层:事务将假定只有它自己在操作数据库,彼此不知晓。
Durability:一旦事务完成,就不能返回。
跨数据库事务:2PC (two-phase commit), 2PC is the anti-scalability pattern (Pat Helland) 是反可伸缩模式的,JavaEE中的JTA事务可以支持2PC。因为2PC是反模式,尽量不要使用2PC,使用BASE来回避。

BASE模型反ACID模型,完全不同ACID模型,牺牲高一致性,获得可用性或可靠性:
Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库)
Soft state软状态 状态可以有一段时间不同步,异步。
Eventually consistent最终一致,最终数据是一致的就可以了,而不是时时高一致。

BASE思想的主要实现有
1.按功能划分数据库
2.sharding碎片

BASE思想主要强调基本的可用性,如果你需要High
可用性,也就是纯粹的高性能,那么就要以一致性或容错性为牺牲,BASE思想的方案在性能上还是有潜力可挖的。

现在NoSQL运动丰富了拓展了BASE思想,可按照具体情况定制特别方案,比如忽视一致性,获得高可用性等等,NOSQL应该有下面两个流派:
1. Key-Value存储,如Amaze Dynamo等,可根据CAP三原则灵活选择不同倾向的数据库产品;
2. 领域模型 + 分布式缓存 + 存储 (Qi4j和NoSQL运动),可根据CAP三原则结合自己项目定制灵活的分布式方案,难度高。
这两者共同点:都是关系数据库SQL以外的可选方案,逻辑随着数据分布,任何模型都可以自己持久化,将数据处理和数据存储分离,将读和写分离,存储可以是异步或同步,取决于对一致性的要求程度。
不同点:NOSQL之类的Key-Value存储产品是和关系数据库头碰头的产品BOX,可以适合非Java如PHP RUBY等领域,是一种可以拿来就用的产品,而领域模型 +
分布式缓存 + 存储是一种复杂的架构解决方案,不是产品,但这种方式更灵活,更应该是架构师必须掌握的。

转载于:https://www.cnblogs.com/moonandstar08/p/5087010.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一份详尽的IPC$入侵资料

创建时间:2003-03-16文章属性:原创文章来源:菜菜鸟社区http://ccbirds.yeah.net文章提交:iqst(papabang_at_qingdaonews.com)[ccbirds入门级教程]--各个击破1--ipc$入侵一 唠叨一下:网上关于ipc$入侵的文章可谓多如牛毛…

CString转char的方法总结

From: http://www.lewensky.cn/read.php/133.htm 1.传给未分配内存的const char* (LPCTSTR)指针. CString cstr(asdd);const char* ch (LPCTSTR)cstr;ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.2.传给未分配内…

[react-router] 请你说说react的路由是什么?

[react-router] 请你说说react的路由是什么? React的路由是纯前端的路由,就是根据hash或browser path的变化,框架内封装好了方法,可以自由的切换DOM展示,来模拟页面或局部页面被替换的目的;让浏览器不用刷…

使用Delphi7构建工商银行电子口令密码查找助手

工商银行通过网银结账的时候,会给出一个类似于B5G7的字符串,让你在自己的口令卡上找到对应的口令码。因为口令卡上的数字挺多的,而且有水印,找起来挺麻烦的,我就花了几十分钟的时间,写了一个快速查找口令卡…

[react-router] 请你说说react的路由的优缺点?

[react-router] 请你说说react的路由的优缺点? 优点: 配置灵活支持丰富的传参利用hashRouter也可以实现低版本浏览器的兼容 缺点: v4之后使用url query的方式传参比较繁琐,解析时需要使用queryString和location.search利用reac…

gcc compiler warning: “will be initialized after/when initialized here”

From: http://blog.csdn.net/qtyl1988/article/details/6818325 先看看我为二叉树写的结点类&#xff1a; template <class ElemType> class TreeNode { private:TreeNode* lchild;TreeNode* rchild; public:ElemType data;TreeNode(const ElemType& item,TreeNode…

DEV控件Grid显示行号

DEV控件Grid的显示行号需要通过一个事件来设置&#xff0c;具体设置代码为&#xff1a; private void gridView1_CustomDrawRowIndicator(object sender, DevExpress.XtraGrid.Views.Grid.RowIndicatorCustomDrawEventArgs e) {if (e.Info.IsRowIndicator && e.RowHand…

[react-router] React-Router的<Link>标签和<a>标签有什么区别

[react-router] React-Router的<Link>标签和<a>标签有什么区别 Link 组件最终会渲染为 HTML 标签 <a>&#xff0c;它的 to、query、hash 属性会被组合在一起并渲染为 href 属性。虽然 Link 被渲染为超链接&#xff0c;但在内部实现上使用脚本拦截了浏览器的…

创建弹出窗口的图片展示

本帖最后由 oisweb 于 2009-11-24 14:11 编辑图片有点大了 显示不是很好 自己看着办吧 1 创建工程 设置页面属性 <mx:Application xmlns:mx"http://www.adobe.com/2006/mxml" layout"vertical" horizontalAlign"center" verticalAlign&…

国内常用NTP服务器地址及IP

From: http://www.douban.com/note/171309770/ 时间服务器默认的端口号是&#xff1a;123&#xff0c;协议为UDP 210.72.145.44 (国家授时中心服务器IP地址) 133.100.11.8 日本 福冈大学 time-a.nist.gov 129.6.15.28 NIST, Gaithersburg, Maryland time-b.nist.gov 129.6.1…

[react] 受控组件和非受控组件有什么区别?

[react] 受控组件和非受控组件有什么区别&#xff1f; 受控组件用value和组件的state绑定&#xff0c;当value更新时&#xff0c;会自动更新state 非受控组件没有value&#xff0c;采用ref直接操作dom 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容…

Core Data 多线程操作实战篇

最近在解决百度音乐iPhone客户端偶现数据库操作crash的问题&#xff0c;顺手整理了下CoreData的多线程原则&#xff0c;以及实际开发时应该如何遵守这些原则。 Core Data多线程操作的基本原则 不允许跨线程访问MOC&#xff1a; 在某一个MOC上的CRUD操作只能在它的操作线程上进行…

分布式系统和元数据

------俗解&#xff1a;---------------------------------------------------- 什么是分布式系统&#xff1a; 1&#xff1a;通俗点说分布式系统就是能把服务器端程序分开部署到多台机器上。 2&#xff1a;跟分层毫无关系, 跟它容易搞混的是集群 分布式就是把一个系统分布在不…

移植gdb到DM368 IPNC中 linux arm gdb

From: http://blog.csdn.net/ghostyu/article/details/8081897 移植gdb到嵌入式的ipnc中&#xff0c;大多数人习惯使用printf调试&#xff0c;但是遇到像”segment fault“这的错误也是后就很难定位&#xff0c;这时候gdb的作用就体现出来了 在pc使用gdb调试应用程序前&…

[react] react是哪个公司开发的

[react] react是哪个公司开发的 facebook 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通关前端面试题

Silverlight实用窍门系列:56.Silverlight中的Binding使用(一)【附带实例源码】

本文将详细讲述Silverlight中Binding&#xff0c;包括Binding的属性和用法&#xff0c;Binding的数据流向。 Binding:一个完整的Binding过程是让源对象中的某个属性值通过一定流向规则进行转换和验证之后绑定到目标对象的某个属性上面。这个源对象由ElementName指定&#xff0c…

linux下如何产生core,调试core

From: http://blog.163.com/redhumor126/blog/static/19554784201131791239753/ 在程序不寻常退出时&#xff0c;内核会在当前工作目录下生成一个core文件&#xff08;是一个内存映像&#xff0c;同时加上调试信息&#xff09;。使用gdb来查看core文件&#xff0c;可以指示出…

[react] react中怎样阻止组件渲染?

[react] react中怎样阻止组件渲染&#xff1f; class组件 使用shouldComponentUpdate生命周期&#xff0c;return false继承React.PureComponent只要prop没有改变(浅比较)&#xff0c;就不会执行render函数 函数式组件 使用React.memo包裹组件函数&#xff0c;props没有改变就…

嵌套滚动demo

https://github.com/luv135/NestedScrollingDemo https://github.com/ggajews/nestedscrollingchildviewdemo ViewParentCompat是一个和父view交互的兼容类&#xff0c;它会判断api version&#xff0c;如果在Lollipop以上&#xff0c;就是用view自带的方法&#xff0c;否则判断…

jqGrid + JSON + WebService 完整示例

真没找到这样的例子&#xff0c;于是自已写了个&#xff0c;分享出来。 第一步&#xff0c;首先在WebService上&#xff0c;添加[System.Web.Script.Services.ScriptService]属性标签&#xff0c;让WebServer支持JSON. namespace jqGrid_JSON_WebService_Sample.Services{/// &…