分布式精华问答:分布式环境下如何保持数据一致性的?| 技术头条

640?wx_fmt=png

分布式开发的时代实际上早已悄悄地成为了时代的主流,今天,我们就来看看关于分布式的精华问答吧!


640?wx_fmt=gif1

Q:分布式系统中主要是用到了服务化,消息中间件,数据库拆分,便于横向扩展和维护,但分布式系统中的拆分的这个维度该怎么把握?拆分后面临的分布式事务用什么方式处理比较好?分布式中soa框架有dubbo、motan及spring cloud的spring全家桶,这些技术该怎么选择?


A:以微服务为例,拆分遵守几种原则,如单一职责、高内聚低耦合等,拆分的颗粒度足够小即可便于开发;但不要过小,过小的化微服务的数量也会激增,管理这些大批量的服务也将会是一个挑战。 分布式事务常用的方式有两阶段提交、三阶段提交、paxos算法等。


640?wx_fmt=gif2

Q:分布式环境下如何保持数据一致性的?分布式事务吗?


A:分布式系统的一致性有多种模型,如严格一致性、持续一致性、最终一致性等,分布式事务算法常用的有2PC、3PC、Paxos 各有优缺点,实际案例可以参考 Chubby、Hypertable、Zookeeper等。


640?wx_fmt=gif3

Q:消息中间件的选择上,能否单用kafka不用其他,还是说根据不同业务场景选用不同的消息中间件。一般在什么情景下使用消息中间件呢?是否在并发程度不是很高的情况下可以不用,只有在并发达到一定程度才启用呢?


A:消息中间件结合业务场景选单一种就行了。各类中间件各有优劣 2.消息中间件适用于通信场景,比如消息一对一、广播通信等。由于消息中间件这种队列的数据结构特点,也可以用于数据一致性的场景。


640?wx_fmt=gif4

Q:分布式实例是在不同的主机上的,文件如何能够做到同步?


A:文件也是数据,所以这个问题与数据的同步解决方案类似。这里可能要考虑的是相同的文件,在不同的主机下,如何拥有相同的标识,比如各类网盘。系统可以每个上传文件一个哈希值.也就是文件的唯一识别码,这样可以在同步时,可以根据这个唯一码进行对比。


640?wx_fmt=gif5

Q:分布式,微服务这些都需要在什么情况下使用?分布式最终实现了什么目的?如果非必须的,是否要上分布式呢?


A:大型、业务复杂的系统需要; 分布式本质是为了解决单机的所存在的问题,比如性能瓶颈、扩展、容错等; 分布式系统第一定律“能不要上分布式系统就不要上”。


640?wx_fmt=png

小伙伴们冲鸭,后台留言区等着你!

关于分布式,今天你学到了什么?还有哪些不懂的?除此还对哪些话题感兴趣?快来留言区打卡啦!留言方式:打开第XX天,答:……

同时欢迎大家搜集更多问题,投稿给我们!风里雨里留言区里等你~


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:

  • 分布式架构系列: 负载均衡技术详解 | 技术头条

  • 00后的AI开发者进阶之道:从入门到鏖战MIT编程大赛 | 人物志

  • 吃了公司零食被指“偷吃”,外包怎么了?

  • ICPC 2019国际大学生程序设计竞赛,中国高校未能夺冠

  • EOS现状: 72%应用涉赌被列为高危, 说好的诗和远方, 你竟沦落成了这样?

  • 凉山火灾启示录:面对大火,AI 能做些什么?


640?wx_fmt=png真香,朕在看了!

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

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

相关文章

Qt中视图的缩放对应缩略图中矩形框的缩放

本文实现的目的是:视图缩放时,缩略图中的矩形框也进行缩放,而缩略图中的矩形区域为视图中的可见区。 获取视图中滚动条的值,将其值与缩略图所在的小窗口对比,可通过绘图求其比例,再按比例缩小。 首先提供主…

OpenGL ES EGL eglChooseConfig

目录 一. EGL 前言二. EGL 绘制流程简介三.eglGetConfigs 函数简介 四.eglGetConfigs 函数使用五.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基…

第九篇:Spring Boot整合Spring Data JPA_入门试炼03

CrudRepository接口的使用 CrudRepository接口,主要完成一些增删改查的操作。 注意:CrudRepository接口继承Repository接口 1、持久层接口: package com.gblfy.repository;import com.gblfy.pojo.Users; import org.springframework.data.r…

第九篇:Spring Boot整合Spring Data JPA_入门试炼04

六、PagingAndSortingRepository接口 前言&#xff1a;该接口提供了分页与排序的操作&#xff0c;该接口继承了CrudRepository 1、持久层接口&#xff1a; public interface UserRepositoryPagingAndSorting extends PagingAndSortingRepository<Users,Integer> { }测试…

qt创建图形项,添加自定义窗口

创建场景&#xff0c;视图和图形项之后&#xff0c;在图形项中添加自定义窗口。主要代码如下&#xff1a; scene new QGraphicsScene(0,0,1855,578,ui->insideWidget);//在开发中QGraphicsScene::sceneRect最好小于等于QGraphicsView::sceneRect大小&#xff0c;以保证在缩…

成立一周?谷歌人工智能道德委员会解散了?近日,金山云和小米刚签订了不超过9000万的硬件产品供应协议,闹哪样? | 极客头条...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 亚马逊推Alexa无线耳机&…

java.sql.SQLException: validateConnection false

解决方案&#xff1a; 将mysql-connector-java版本修改为下面版本&#xff1a; <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.0.2</version> </dependency>

第九篇:Spring Boot整合Spring Data JPA_入门试炼05

JpaRepository接口 前言&#xff1a;该接口继承了PagingAndSortingRepository接口。对继承的父接口中方法的返回值进行适配。 例如&#xff1a;父接口中的方法的返回值是是迭代器&#xff0c;而在子类(JpaRepository)返回值是Lis集合。 1、持久层接口&#xff1a; public inte…

2019年技术盘点微服务篇(二):青云直上云霄 | 程序员硬核评测

戳蓝字“CSDN云计算”关注我们哦&#xff01;程序员硬核评测&#xff1a;客观、高效、不说软话。无论是技术质量、性能水平&#xff0c;还是工具筛选&#xff0c;一测便知&#xff01;作者&#xff1a;孙浩峰过去几年来&#xff0c;“微服务架构”方兴未艾&#xff0c;尽管这种…

第九篇:Spring Boot整合Spring Data JPA_入门试炼06

八、JpaSpecificationExecutor接口 前言&#xff1a;该接口主要提供了多条件查询的支持&#xff0c;并且可以在查询中添加分页和排序。 注意&#xff1a;JpaSpecificationExecutor接口是独立存在的。完全独立。 1、持久层接口&#xff1a; public interface UsersRepositoryS…

Qt场景中图形项的删除

场景中图形项删除的时候调用系统函数removeItem()删除该图形项&#xff0c;但还需将图形项delete掉&#xff0c;并置为空&#xff0c;主要代码如下&#xff1a; void chunzhongForm::deleteItem(QGraphicsItem *item) {scene->removeItem(item);if(item ! NULL){delete ite…

第十篇:Spring Boot整合mybatis+逆向工程(Mysql+Oracle) 入门试炼01

1、添加pom依赖 <dependencies><!--springboot web 启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--thymeleaf 启动器--><d…

Qt中QMap删除元素的简单使用

QMap基本上qt中的使用和C中QMap的使用一样&#xff0c;下面先附上一段代码&#xff1a; void chunzhongForm::deleteScrGroupItem(int screenGroup) {QMap<findInfo,QGraphicsRectItem*>::iterator it;for(it itemMap.begin();it!itemMap.end();){if(it.key().sid scr…

Docker简介与简单使用 | 技术头条

戳蓝字“CSDN云计算”关注我们哦&#xff01;技术头条&#xff1a;干货、简洁、多维全面。更多云计算精华知识尽在眼前&#xff0c;get要点、solve难题&#xff0c;统统不在话下&#xff01;作者&#xff1a;常仕禄转自&#xff1a;Docker前一段花了一段时间研究Log4j2的源码&a…

OpenGL ES EGL eglSwapBuffer

目录 一. EGL 前言二. EGL 绘制流程简介三.eglSwapBuffer 函数简介 四.关于多个 EGLContext五.共享 EGLContext六.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> Open…

第十篇:Spring Boot整合mybatis+Mysql 入门试炼02

前言&#xff1a; 1、(SprigBoot整合SpringMVCMybatis) 2、以thymeleaf作为视图层技术整合 3、springboot版本2.0.5.RELEASE 创建项目 1、添加依赖及启动器 <dependencies><!--springboot web 启动器--><dependency><groupId>org.springframework.boo…

qt获取场景的缩略图

获取场景缩略图的代码如下&#xff1a; void chunzhongForm::getRenderPaint() {QPixmap pixmap(SMALL_W,SMALL_H);pixmap.fill(Qt::transparent);QPainter painter(&pixmap);painter.setRenderHint(QPainter::Antialiasing);scene->render(&painter);pixmap.save(…

要闻君说:台积电将为iPhone生产5纳米A系列芯片?腾讯云TStack与银河麒麟完成互认证……...

关注并标星星CSDN云计算极客头条&#xff1a;速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 【4月9日 星期二】云の声音切…

Centos出现-bash: unzip: command not found的解决办法

利用unzip命令解压缩的时候&#xff0c;出现-bash: unzip: command not found的错误 问题定位&#xff1a; unzip——命令没有找到&#xff0c;其原因肯定是没有安装unzip。 解决方案在线安装unzip &#xff1a; 执行命令&#xff1a; yum install -y unzip zip安装成功后就可…

一堆数据中将某一个值相同的数据进行分组

假如一堆数据&#xff0c;每一个数据都有一个标志位&#xff0c;按照标志位值的不同进行划分为不同的组&#xff0c;进行归类。 代码如下&#xff1a; void chunzhongForm::traverseList(winProList &dataList) {int nSize dataList.size();for(int i 0; i < nSize; …