分布式技术

C#的分布式消息队列介绍

懵懂的女人 提交于 2019-12-01 09:58:41
EQueue架构 EQueue是一个分布式的、轻量级、高性能、具有一定可靠性,纯C#编写的消息队列,支持消费者集群消费模式。 主要包括三个部分:producer, broker, consumer。producer就是消息发送者;broker就是消息队列服务器,负责接收producer发送过来的消息,以及持久化消息;consumer就是消息消费者,consumer从broker采用拉模式到broker拉取消息进行消费,具体采用的是long polling(长轮训)的方式。这种方式的最大好处是可以让broker非常简单,不需要主动去推消息给consumer,而是只要负责持久化消息即可,这样就减轻了broker server的负担。同时,consumer由于是自己主动去拉取消息,所以消费速度可以自己控制,不会出现broker给consumer消息推的太快导致consumer来不及消费而挂掉的情况。在消息实时性方面,由于是长轮训的方式,所以消息消费的实时性也可以保证,实时性和推模型基本相当。 EQueue是面向topic的架构,和传统的MSMQ这种面向queue的方式不同。使用EQueue,我们不需要关心queue。producer发送消息时,指定的是消息的topic,而不需要指定具体发送到哪个queue。同样,consumer发送消息也是一样,订阅的是topic

分布式架构的架构稳定性

為{幸葍}努か 提交于 2019-12-01 09:51:24
本文链接:https://blog.csdn.net/m0_38125278/article/details/95046242 分布式架构的架构稳定性 接上一期架构性能,本期讲架构稳定性 1.服务拆分 服务拆分主要有两个目的:一是为了隔离故障,二是为了重用服务模块。但服务拆分完之后,会引入服务调用间的依赖问题。 2.服务冗余 服务冗余是为了去除单点故障,并可以支持服务的弹性伸缩,以及故障迁移。然而,对于一些有状态的服务来说,冗余这些有状态的服务带来了更高的复杂性。其中一个是弹性伸缩时,需要考虑数据的复制或是重新分片,迁移的时候还要迁移数据到其它机器上。 3.限流降级 当系统实在扛不住压力时,只能通过限流或者功能降级的方式来停掉一部分服务,或是拒绝一部分用户,以确保整个架构不会挂掉。这些技术属于保护措施。 4.高可用架构 通常来说高可用架构是从冗余架构的角度来保障可用性。比如,多租户隔离,灾备多活,或是数据可以在其中复制保持一致性的集群。总之,就是为了不出单点故障。 4.高可用运维 高可用运维指的是 DevOps 中的 CI/CD(持续集成 / 持续部署)。一个良好的运维应该是一条很流畅的软件发布管线,其中做了足够的自动化测试,还可以做相应的灰度发布,以及对线上系统的自动化控制。这样,可以做到“计划内”或是“非计划内”的宕机事件的时长最短。 上述这些技术非常有技术含量

深度解析数据缓存技术

旧街凉风 提交于 2019-12-01 07:13:32
1.缓存概述 ​ 缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。 1.1.缓存的原理 将数据写入/读取速度更快的存储(设备); 将数据缓存到离应用最近的位置; 将数据缓存到离用户最近的位置; 1.2.缓存分类 在分布式系统中,缓存的应用非常广泛,从部署角度有以下几个方面的缓存应用: - CDN缓存; - 反向代理缓存; - 分布式Cache; - 本地应用缓存; 1.3.缓存媒介 常用中间件:Varnish,Ngnix,Squid,Memcache,Redis,Ehcache等; 缓存的内容:文件,数据,对象; 缓存的介质:CPU,内存(本地,分布式),磁盘(本地,分布式) 1.4.缓存设计 缓存设计需要解决以下几个问题: 1>缓存什么?哪些数据需要缓存:1.热点数据;2.静态资源。 2>缓存的位置?CDN,反向代理,分布式缓存服务器,本机(内存,硬盘) 3>如何缓存的问题? - 过期策略 - 固定时间:比如指定缓存的时间是30分钟; - 相对时间:比如最近10分钟内没有访问的数据; - 同步机制 - 实时写入;(推) - 异步刷新;(推拉) 2.CDN缓存 ​ CDN主要解决将数据缓存到离用户最近的位置,一般缓存静态资源文件(页面,脚本,图片,视频,文件等)。国内网络异常复杂,跨运营商的网络访问会很慢

基于SOA的高并发和高可用分布式系统架构和组件详解

瘦欲@ 提交于 2019-12-01 07:02:41
基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案。在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服务之间的通信,并且基于弹性云服务搭建高可用的分布式解决方案。 但它们之间的区别可能比相似的地方要多,特别是体现在对服务的使用和与云服务的深度结合上。在具体实践中,微服务的架构也可以与其它互联网中间件组合在一起,组成规模更为庞大的SOA分布式系统。本文主要对一个典型的SOA分布式应用的架构和组件做详细的说明。 企业级系统架构的演变 单体式 单体架构即所有系统功能和模块基于MVC的设计模式耦合在一个单体服务器单元中。基于传统的MVC思想,单体应用基于前后端分离的原则,通过Model、Control和View共同来完成一个特点的服务请求。这种传统的架构模式带了了多人团队合作、代码更新和维护、持续部署方面的困难,更重要的是,这种架构无法支持互联网行业对高并发的需求。下图为一个典型商城应用的单体架构及其SSM实现架构: 关于单体式应用的更多资料,可参看: JavaWeb开发之详解Servlet及Servlet容器 基于SSM的Java Web应用开发原理初探 集群 至少在高并发的需求上,单体应用的缺陷是行业所无法忍受的, 那如何提升并发性能呢?一个直接的思路是,把单体应用变成多体,变成集群

大数据技术栈

烈酒焚心 提交于 2019-12-01 06:58:49
大数据技术栈 Hadoop 历史: https://www.jikexueyuan.com/course/677_1.html?ss=1 1. Google大数据与Hadoop对比 功能 Google Hadoop 存储 GFS HDFS 计算 MapReduce MapReduce 查询 BigTable HBase 2. 大数据分类 2.1 根据数据类型分类 2.1.1 结构化数据 能够用数据或统一的结构加以表示,人们称之为结构化数据,如数字、符号。传统的关系数据模型,行数据,存储于数据库,可用二维表结构表示。 2.1.2 半结构化数据 所谓半结构化数据,就是介于完全结构化数据(如关系型数据库,面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,XML、HTML文档就属于半结构化数据。它一般是自描述的,数据的结构和内容混在一起,没有明显的区分。 2.1.3 非结构化数据 非结构化数据库是指其字段长度可变,并且每隔字段的记录又可以由可重复或不可重复的子字段构成的数据库,用它不仅可以处理结构化数据(如数字、符号等信息)而且更适合处理非结构化数据(全文文本,图像,声音,影视,超媒体等信息)。 参考链接: https://zhidao.baidu.com/question/589302455243618045.html 2.2 根据处理时间跨度要求分类 2.2

接口常识

半腔热情 提交于 2019-12-01 02:14:37
衡量一个接口是否能够支撑高并发,我们最先想到的就是他的QPS是多少,影响QPS大小的关键因素是你的系统是否支持分布式、高并发,当提起这几三个词的时候,是不是很多人都认为分布式=高并发=多线程? 当面试官问到高并发系统可以采用哪些手段来解决,或者被问到分布式系统如何解决一致性的问题,是不是一脸懵逼? 确实,在一开始接触的时候,不少人都会将三者混淆,误以为所谓的分布式高并发的系统就是能同时供海量用户访问,而采用多线程手段不就是可以提供系统的并发能力吗? 实际上,他们三个总是相伴而生,但侧重点又有不同。 01 什么是分布式? 分布式更多的一个概念,是为了解决单个物理服务器容量和性能瓶颈问题而采用的优化手段。 该领域需要解决的问题极多,在不同的技术层面上,又包括:分布式文件系统、分布式缓存、分布式数据库、分布式计算等,一些名词如Hadoop、zookeeper、MQ等都跟分布式有关。 从理念上讲,分布式的实现有两种形式: 水平扩展:当一台机器扛不住流量时,就通过添加机器的方式,将流量平分到所有服务器上,所有机器都可以提供相当的服务; 垂直拆分:前端有多种查询需求时,一台机器扛不住,可以将不同的需求分发到不同的机器上,比如A机器处理余票查询的请求,B机器处理支付的请求。 02 什么是高并发? 相对于分布式来讲,高并发在解决的问题上会集中一些,其反应的是同时有多少量:比如在线直播服务

分布式网站架构后续:zookeeper技术浅析

梦想的初衷 提交于 2019-12-01 00:24:37
 Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用越来越多。今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用。   Zookeeper是针对大型分布式系统的高可靠的协调系统。由这个定义我们知道zookeeper是个协调系统,作用的对象是分布式系统。为什么分布式系统需要一个协调系统了?理由如下:   开发分布式系统是件很困难的事情,其中的困难主要体现在分布式系统的“部分失败”。“部分失败”是指信息在网络的两个节点之间传送时候,如果网络出了故障,发送者无法知道接收者是否收到了这个信息,而且这种故障的原因很复杂,接收者可能在出现网络错误之前已经收到了信息,也可能没有收到,又或接收者的进程死掉了。发送者能够获得真实情况的唯一办法就是重新连接到接收者,询问接收者错误的原因,这就是分布式系统开发里的“部分失败”问题。   Zookeeper就是解决分布式系统“部分失败”的框架。Zookeeper不是让分布式系统避免“部分失败”问题,而是让分布式系统当碰到部分失败时候,可以正确的处理此类的问题,让分布式系统能正常的运行。  

大型网站架构系列:电商网站架构案例

匆匆过客 提交于 2019-11-30 23:11:30
#0 系列目录# 大型分布式网站架构 大型分布式网站架构技术总结 大型网站架构系列:电商网站架构案例 #1 电商案例原因# 分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.SNS网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城,国美在线,汽车之家等。 大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化 , 开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存,使用高性能的通信框架等 。电商网站具备以上两类的特点, 比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术 。因此,我们采用电商网站作为案例,进行分析。 #2 电商网站需求# 客户需求: 建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款; 用户购买时可以在线与客服沟通; 用户收到商品后,可以给商品打分,评价; 目前有成熟的进销存系统;需要与网站对接; 希望能够支持3~5年,业务的发展; 预计3~5年用户数达到1000万; 定期举办双11,双12,三八男人节等活动; 其他的功能参考京东或国美在线等网站。 客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。 需求管理传统的做法

电商网站架构案例

北城以北 提交于 2019-11-30 23:09:02
一、电商案例的原因 分布式大型网站,目前看主要有几类1.大型门户,比如网易,新浪等;2.SNS网站,比如校内,开心网等;3.电商网站:比如阿里巴巴,京东商城, 国美在线,汽车之家等。大型门户一般是新闻类信息,可以使用CDN,静态化等方式优化,开心网等交互性比较多,可能会引入更多的NOSQL,分布式缓存, 使用高性能的通信框架等。电商网站具备以上两类的特点,比如产品详情可以采用CDN,静态化,交互性高的需要采用NOSQL等技术。因此,我们采用电商网 站作为案例,进行分析。 二、电商网站需求 客户需求: 建立一个全品类的电子商务网站(B2C),用户可以在线购买商品,可以在线支付,也可以货到付款; 用户购买时可以在线与客服沟通; 用户收到商品后,可以给商品打分,评价; 目前有成熟的进销存系统;需要与网站对接; 希望能够支持3~5年,业务的发展; 预计3~5年用户数达到1000万; 定期举办双11,双12,三八男人节等活动; 其他的功能参考京东或国美在线等网站。 客户就是客户,不会告诉你具体要什么,只会告诉你他想要什么,我们很多时候要引导,挖掘客户的需求。好在提供了明确的参考网站。因此,下一步要进行大量的分析,结合行业,以及参考网站,给客户提供方案。 其他的略~~~~~ 需求功能矩阵 需求管理传统的做法,会使用用例图或模块图(需求列表)进行需求的描述。这样做常常忽视掉一个很重要的需求

从0开始学架构

▼魔方 西西 提交于 2019-11-30 19:43:43
微服务架构实战160讲 其它学习课程目录: 从0开始学微服务 面试官绝杀:系统是如何支撑高并发的? 分布式技术原理与算法解析 消息队列高手课 从0开始学架构 微服务 一种架构模式,提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(RESTful API)。每个服务都围绕着具体的业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建。 结构图: 来源: https://www.cnblogs.com/it-chen/p/11637928.html