老卫带你学---分布式系统(1)

2024-02-19 23:28
文章标签 老卫带 分布式系统

本文主要是介绍老卫带你学---分布式系统(1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概念

分布式系统就是一组协作计算机系统,通过网络通信来完成一系列连贯任务

其特点在于

  • parallelism并行性,cpu等计算资源可以并行计算
  • toleration fault容错性,即使有一台设备出现问题,也不会影响整个系统的功能
  • physical isolated物理隔离,目前分布式系统基本设计的都是物理隔离,以增强系统的健壮性
  • security 安全性

分布式系统构建的本质在于,通过对底层infra的抽象来让整体变为单一系统

底层infra主要包括,storage存储,coms网络,comp计算

抽象的工具一般有rpc,threads,concurrency

Performance需要重点考虑的应该是scalebility可扩展性,因为有了可扩展就可以不断增加资源来增加系统的性能

Fault tolerance容错性重点关注:

  • availability高可用性,即使有一个出现问题,也不会影响整体系统的工作。可以使用replication副本来实现,以及适用nv stotage非易失性存储来避免电源断开数据丢失问题
  • consistency一致性,因为有多副本而使得一致性有不小的挑战。可以分为强一致性和弱一致性,主要差异于每次get是否都会拿到最新的更新数据。在设计强一致性的分布式系统时,会有很多的麻烦,所以需要根据业务场景看是否需要

线程与RPC

为了实现分布式系统,Threads与RPC是我们经常使用的技术

线程可以帮助我们:

  • I/O Concurrency:client可以同时给Server端发送大量的请求,由Server端并发处理
  • Multicore performance:充分利用多核计算资源

多线程的挑战在于对共享数据的访问,为了安全一般都需要加锁(Go里的sync.Mutex)

线程之间的协作,有的场景需要比如等待前面的线程的完成:

  • channel:通过channel可以更好的进行并发的控制
  • sync.Cond:也是通过mutex锁来进行并发控制,区别在于cond可以broadcast告诉其他goroutine,这样可以省去很多麻烦
  • sync.waitgroup:等待协程组的完成

在分布式系统中,组件和组件之间大部分都是通过rpc进行网络通信。rpc的核心在于client、server端的通信中隐藏网络协议的细节,将语言本身的数据类型转化为wire format,增加可移植性和互操作性。好处在于可以让client端调用远程接口就像调用本地方法一样简单。

Go RPC是“最多一次”的简单形式
打开TCP连接
向TCP连接写入请求
Go RPC从不重新发送请求
所以服务器不会看到重复的请求
Go RPC代码如果没有得到回复则返回错误

这篇关于老卫带你学---分布式系统(1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726325

相关文章

分布式系统的个人理解小结

分布式系统:分的微小服务,以小而独立的业务为单位,形成子系统。 然后分布式系统中需要有统一的调用,形成大的聚合服务。 同时,微服务群,需要有交流(通讯,注册中心,同步,异步),有管理(监控,调度)。 对外服务,需要有控制的对外开发,安全网关。

分布式系统的主要考虑

异构性:分布式系统由于基于不同的网路、操作系统、计算机硬件和编程语言来构造,必须要考虑一种通用的网络通讯协议来屏蔽异构系统之间的禅意。一般交由中间件来处理这些差异。缺乏全球时钟:在程序需要协作时,它们通过交换消息来协调它们的动作。紧密的协调经常依赖于对程序动作发生时间的共识,但是,实际上网络上计算机同步时钟的准确性受到极大的限制,即没有一个正确时间的全局概念。这是通过网络发送消息作为唯一的通信方式

SpringCloud:构建分布式系统的利器

引言 随着云计算和微服务架构的兴起,传统的单体应用已经难以满足现代应用的高并发、高可用、可扩展等需求。SpringCloud,作为Spring生态中的微服务架构开发工具,通过提供一系列组件和框架,帮助开发者快速构建分布式系统。本文将详细介绍SpringCloud的概念、核心组件、以及如何使用SpringCloud来搭建一个简单的微服务应用。 SpringCloud简介 SpringCloud

分布式系统理论基础三-时间、时钟和事件顺序

GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 现实生活中时间是很重要的概念,时间可以记录事情发生的时刻、比较事情发生的先后顺序。分布式系统的一些场景也需要记录和比较不同

分布式系统理论基础二-CAP

GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 引言 CAP是分布式系统、特别是分布式存储领域中被讨论最多的理论,“什么是CAP定理?”在Quora 分布式系统分类下排

分布式系统理论进阶:选举、多数派和租约

GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 选举(election)是分布式系统实践中常见的问题,通过打破节点间的对等关系,选得的leader(或叫master、co

分布式系统理论进阶 - Paxos

GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 引言 《分布式系统理论基础 - 一致性、2PC和3PC》一文介绍了一致性、达成一致性需要面临的各种问题以及2PC、3PC

分布式系统理论进阶:Paxos变种和优化

GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 引言 《分布式系统理论进阶 - Paxos》中我们了解了Basic Paxos、Multi Paxos的基本原理,但如果

分布式系统的一些基本概念

GitHub:https://github.com/wangzhiwubigdata/God-Of-BigData 关注公众号,内推,面试,资源下载,关注更多大数据技术~大数据成神之路~预计更新500+篇文章,已经更新50+篇~ 分布式 来自csdn,作者:陆小凤 进阶篇来自:bangerlee 作者对部分地方做了订正 目前这系列文章是网络上分布式

分布式系统:数据一致性解决方案

点击上方蓝色字体,选择“设为星标” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 大数据真好玩 点击右侧关注,大数据真好玩! 在分布式系统中,随着系统架构演进,原来的原子性操作会随着系统拆分而无法保障原子性从而产生一致性问题,但业务实际又需要保障一致性,下面我从学习和实战运用总结一下分布式一致性解决方案。 1. CAP & Base理论  CA