0

分布式系统架构

分布式理论知识1、分布式系统架构1.1基础概念分布式 : 将一个单体项目分成很多个模块,各个模块协同工作,各个模块构成了分布式系统集群:针对单个模块或者单个系统在多台服务器上部署,称为集群。为了提高系统的可用性,增加系统的负载。1.2分布式系统演变1.3分布式系统面临的问题问题描述通信异常网络本身的不可靠性,因此每次网络通信都会伴随着网络不可用的风险(光纤、路由、DNS等硬件设备或系统的不可用),都会导致最终分布式系统无法顺利进行一次网络通信,另外,即使分布式系统各节点之间的网络通信能够正常执行,其延时也会大于单机操作,存在巨大的延时差别,也会影响消息的收发过程,因此消息丢失和消息延迟变的非常...

阅读全文>>

0

架构解密从分布式到微服务:深入理解网络,NIO

NIO我们知道,分布式系统的基础是网络。因此,网络编程是分布式软件工程师和架构师的必备技能之一,而且随着当前大数据和实时计算技术的兴起,高性能RPC架构与网络编程技术再次成为焦点。不管是RPC领域的ZeroC Ice、Thrift,还是经典分布式框架Actor模型中的Akka,或者实时流领域的Storm、Spark、 Flink, 又或者开源分布式数据库中的Mycat、VoltDB, 这些高大上产品的底层通信技术都采用了NIO (非阻塞通信)通信技术。而Java领域里大名鼎鼎的NIO框架一Netty, 则被众多的开源项目或商业软件所采用。相对于它的老前辈BIO (阻塞通信)来说,NIO 模型非...

阅读全文>>

0

简单列一下分布式高并发要做的事情

数据库以MySQL为例。慢查询日志,索引优化(explain),覆盖索引。数据库一主多从或者双主多从。读写分离。然后对表进行垂直划分,例如一张字段很多的宽表转为子母表。水平划分,根据业务特性,对表进行分区(现在应该很少用),分表,甚至分库。数据该归档的归档,日表变月表,年表,或者变地域表等。使用sharding-jdbc等。甚至可以给数据库硬盘换上SSD。数据量再大,就该考虑大数据了。缓存以Redis为例。哨兵保证高可用,集群(最低3主3从)保证吞吐量(相当于MySQL的分库)。要注意缓存与DB的数据一致性(更新后删),缓存穿透(布隆过滤器),缓存雪崩(预热,随机时间过期)问题。还要关注持久化...

阅读全文>>

0

分布式高并发服务三种常用限流方案简介

服务限流场景在高并发大流量系统中,由于并发大造成服务资源不足,负载过高,进而引发致一系列问题,这里的流量一般都是突发性的,由于系统准备不足,很难短期扩容来应对 ,进行限流是最常用的手段,所以说限流也是服务稳定性治理重要的手段。限流可能发生在多个层面:用户网络层:突发的流量场景如热点事件流量(秒杀事件、热门抢购,微博热搜),恶意刷流,竞对爬虫等。内部应用层:上游服务的异常调用,脚本异常请求,失败重试策略造成流量突发。实现限流方案常用的限流方法主要有三种:计数器算法,漏斗桶算法,令牌桶算法。1.计算器限流1.1 实现原理设计限流条件,如根据用户id/商户id/IP/UUID+请求url作为限流对象...

阅读全文>>

0

Eureka+负载均衡+Hystrix+网关,我全给你讲清楚

一、 网站的架构相信大家应该都经历过一个普通地网站发展成大型网站过程中的一种较为典型的架构演变历程。因为这是你在大学期间的必修课,就是搭建一个简单的网站,说不定你的毕业实际就是一个什么管理系统,对吧,这就是最初的网站搭建,但是当你踏入工作岗位之后或者随着你学习内容的扩展和深入,一个项目中会由多个子项目构成,但是一旦有了多个子项目,比如把淘宝网的订单系统和会员系统分开来看,就回产生如何管理接口、负载均衡、高并发情况下怎么限流断路等问题。那么这就有SpringCloud出现了。我们来看下面这张架构图那么springCloud的组件大概有哪些呢,我先简单介绍下:Eureka 服务注册中心服务消费者 ...

阅读全文>>

0

RabbitMQ分布式系统的应用

由于之前做的项目中需要在多个节点之间可靠地通信,所以废弃了之前使用的Redis pub/sub(因为集群有单点问题,且有诸多限制),改用了RabbitMQ。使用期间得到不少收获,也踩了不少坑,所以在此分享下心得。怎么保证可靠性的?RabbitMQ提供了几种特性,牺牲了一点性能代价,提供了可靠性的保证。持久化当RabbitMQ退出时,默认会将消息和队列都清除,所以需要在第一次声明队列和发送消息时指定其持久化属性为true,这样RabbitMQ会将队列、消息和状态存到RabbitMQ本地的数据库,重启后会恢复。接收应答客户端接收消息的模式默认是自动应答,但是通过设置autoAck为false可以让...

阅读全文>>

0

分布式定时任务调度框架实践

分布式任务调度框架几乎是每个大型应用必备的工具,本文介绍了任务调度框架使用的需求背景和痛点,对业界普遍使用的开源分布式任务调度框架的使用进行了探究实践,并分析了这几种框架的优劣势和对自身业务的思考。一、业务背景1.1 为什么需要使用定时任务调度(1)时间驱动处理场景:整点发送优惠券,每天更新收益,每天刷新标签数据和人群数据。(2)批量处理数据:按月批量统计报表数据,批量更新短信状态,实时性要求不高。(3)异步执行解耦:活动状态刷新,异步执行离线查询,与内部逻辑解耦。1.2 使用需求和痛点(1)任务执行监控告警能力。(2)任务可灵活动态配置,无需重启。(3)业务透明,低耦合,配置精简,开发方便。...

阅读全文>>

0

分布式架构的前世今生

一、前言随着社会的发展,技术的进步,以前的大型机架构很显然由于高成本、难维护等原因渐渐地变得不再那么主流了,替代它的就是当下最火的分布式架构,从大型机到分布式,经历了好几个阶段,我们弄明白各个阶段的架构,才能更好地理解和体会分布式架构的好处,那么本文我们就来聊聊分布式架构的演进过程,希望能给大家带来眼前一亮的感觉。二、背景说明我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,慢慢的完善的。 在这个过程中,开发模式、技术架构等都会随着迭代发生非常大的变化。 而针对不同业务特...

阅读全文>>

1

保证分布式系统数据一致性的6种方案

问题的起源在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性?具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。为了便于讨论问题,先简单介绍下数据一致性的基础理论。强一致当更新操作完成之后,任何多个后续进程或者线程的访问都会返回最新的更新过的值。这种是对用户最友好的,就是用户上一次写什么,下一次就保证能读到什么。根据 CAP 理论,这种实现需要牺牲可用性。弱一...

阅读全文>>

0

分布式架构的总结

一、前言​  随着社会的发展,技术的进步,以前的大型机架构很显然由于高成本、难维护等原因渐渐地变得不再那么主流了,替代它的就是当下最火的分布式架构,从大型机到分布式,经历了好几个阶段,我们弄明白各个阶段的架构,才能更好地理解和体会分布式架构的好处,那么本文我们就来聊聊分布式架构的演进过程,希望能给大家带来眼前一亮的感觉。 作者:领悟.海洋二、背景说明​  我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,慢慢的完善的。 在这个过程中,开发模式、技术架构等都会随着迭代发生非...

阅读全文>>