分布式架构浅析

分布式架构理解总结 1、分布式协作及配置管理系统 2、分布式缓存系统 3、分布式持久化存储 4、消息系统 5、搜索引擎 6、CDN系统 7、负载均衡系统 8、分布式文件系统 9、日志收集系统 10、离线近实时计算系统 11、数据仓库 12、监控系统 立即下载

涉及的书籍:

大型网站技术架构:核心原理与案例分析
大型网站系统与Java中间件实践
大型分布式网站架构设计与实践
Spring Cloud微服务实战
从Lucene到Elasticsearch全文检索实战

网站:
GitHub:https://github.com/sharpcsu?tab=repositories
结构

什么是大型网站

访问量,数据量,高并发,业务和系统的复杂度

涉及的技术:
通讯协议、远程调用、服务治理,系统安全、存储、搜索、监控、稳定性保障、性能优化、数据分析、数据挖掘等多个领域

网站架构的演化

大型网站架构的演化和生态系统的演化笔记类似:生态系统演化到什么程度依赖于水分、温度和光照,演化的目的是为了更好的争夺阳关进行光合作用。而网站架构演化到什么程度取决于业务的发展。系统架构的演化则是访问量,数据量,高并发,业务和系统的复杂度的增加,更好的服务用户。原有数据库的职责一部分被搜索引擎、缓存替代了

单机 => 数据库与应用分离 => 应用服务集群化 => 读写分离 => 分布式存储系统 => 垂直拆分 => 水平拆分 => 应用拆分

单机模式
数据库与应用分离
应用服务集群化

应用服务化

演进过程中遇到的问题

  1. 应用服务器集群化后的session问题

Cookie传递session
粘性回话
回话复制
分布式session缓存服务器

  1. 数据库读写分离后问题

主从复制,异步和同步

  1. 引入缓存

缓存失效:主动失效,被动失效

  1. 数据库水平拆分的问题

SQL路由问题

解决方案:中间件

服务框架
数据访问层
消息中间件

服务框架:对应用拆分,完成服务化,解决集群间通讯问题
数据访问层:完成数据库的拆分及数据库的管理、扩容、前移工作,可以方便的访问已分库、分表的数据库节点
消息中间件:异步和解耦,削峰填谷

在这里插入图片描述

服务框架

对应用拆分,完成服务化,解决集群间通讯问题

服务注册查找中心
客户端负载均衡:随机、轮询、权重,多机房处理

Spring Cloud Eureka
Eureka服务端:@EnableEurekaServer discover-server
Eureka客户端:@EnableDiscoveryClient app-manager

高可用Eureka

高可用注册中心:Eureka Server的高可用是将自己作为服务向其它服务注册中心注册自己。

服务注册中心:失效剔除、自我保护
服务提供者:服务注册、服务同步、服务续约
服务消费者:获取服务、服务调用、服务下线

在这里插入图片描述

消息中间件

消息模型:Queue(点对点), Topic(发布/订阅)

在这里插入图片描述

互联网安全

  • 数字摘要
    防止信息篡改,不可逆,MD5、SHA

  • 对称加密
    加密和解密的密钥相同,速度快、效率高,长用于对内容加密

  • 非对称加密
    公钥、私钥,

  • 数字签名:验证通讯双方合法性
    数字摘要与非对称加密结合运用

  • 数字证书
    由权威机构颁发,带有公钥信息

  • Oauth协议
    在不获取用户密码的情况下保障ISV对数据的访问是经过授权的合法行为

备注:

广泛使用对称与非对称加密算法结合使用的办法,达到安全与时间的平衡。非对称加密传输密钥,对称加密传输内容

HTTPS:保证通讯过程中数据不被第三方监听或截取

HTTPS = HTTP + SSL

https协议在HTTP协议与TCP协议间增加了安全层,所有请求和响应数据在经过网络传输之前都会进行加密。
HTTPS协议能够确保整个通讯过程是加密的,密钥随机产生,通过数字证书验证通讯双方的身份。通讯内容使用对称加密。

部署HTTPS Web:
Tomcat单向认证配置,tomcat双向认证配置

在这里插入图片描述

微服务

微服务主要由几个部分组成
在这里插入图片描述

微服务-Spring Boot

  • 通过设计大量的自动化配置等方式来简化Spring原有样板化的配置
  • spring-boot-starter-web:全栈web开发模块,包含嵌入式tomcat、Spring MVC
  • 应用监控与管理actuator

Spring Boot属性加载顺序:

命令行中传入的参数
以json格式配置在系统环境变量中的内容SPRING_APPLICATION_JSON属性
java:comp/env中的JNDI属性
Java的系统属性
操作系统的环境变量
通过random.*配置的随机属性
位于当前jar包之外,针对不同{profile}环境的配置文件内容
位于当前jar包之内,针对不同{profile}环境的配置文件内容
位于当前jar包之外的application.properties和YAML配置内容
位于当前jar包之内的application.properties和YAML配置内容
在@Configuration注解修改的类中,通过@PropertySource注解定义的属性
应用默认属性,使用SpringApplication.setDefaultProperties定义的内容

微服务-客户端负载均衡:Spring Cloud Ribbon

一个基于HTTP和TCP的客户端负载均衡工具,将面向服务的REST模板请求自动转换成客户端负载均衡的服务调用。客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置。服务消费者直接通过调用被@LoadBalanced注解修饰的RestTemplate来实现面向服务的接口调用。

负载均衡策略:
Ribbon默认的策略是简单轮询,修改负载均衡策略
user-service: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

微服务-服务容错保护:Spring Cloud Hystrix

Hystrix是一个延迟和容错库,一种保护机制。具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等功能。
@EnableHystrixDashboard hystrix-dashboard

@HystrixCommand(fallbackMethod = “queryByIdFallBack”)声明一个降级的方法

在这里插入图片描述

微服务-API 网关服务:Spring Cloud Zuul

网关的核心功能是过滤和路由
Proxy-server项目

使用场景:
登录校验,请求鉴权,异常处理,服务调用时长统计,

在这里插入图片描述
备注:

请求生命周期图解,首先是pre类型的过滤器进行处理,主要是对请求做一些前置加工,比如请求校验等。第二个阶段是routing,路由请求转发阶段。Post类型的过滤器对结果进行一些加工和转换。三个阶段产生的异常会触发error,最后还是流向post处理器。

微服务-分布式配置中心:Spring Cloud Config

分布式配置中心是一个独立的微服务应用,用来连接配置仓库并为客户端提供获取配置信息、加密/解密信息等访问接口。

@EnableConfigServer config-server,码云配置

{cipher}标识一个加密值

基础机构
在这里插入图片描述

微服务-分布式跟踪服务:Spring Cloud Sleuth

一个前端请求会形成一个复杂的分布式服务调用链路,如何实现全链路的跟踪。

Sleuth app-service
在请求到达分布式系统的入口时,服务跟踪框架为该请求创建唯一跟踪标识TradeID,每个工作单元会有一个跟踪标识SpanID,一个完整的请求会形成一个树状结构。

收集日志的平台ELK,Zipkin

Elasticsearch

Elasticsearch-简介

Lucene专注于底层搜索建设,Elasticsearch专注于企业应用。Elasticsearch的底层api是由Lucene提供的,每个Elasticsearch节点上都有一个Lucene引擎支持。

在这里插入图片描述
Elasticsearch的优点:
分布式、全文检索、近实时搜索和分析、高可用、模式自由、RESTful API

核心概念:
集群:默认集群elasticsearch、
节点:拥有几分相似特征的文档集合、
索引、
类型、
文档:Elasticsearch中基本单位、
分片:默认5、
副本:默认1

索引是把文档写入Elasticsearch的过程,搜索是匹配查询条件找出文档的过程。

Elasticsearch-分片

Elasticsearch分片在索引创建时确认,不能扩大,只能按照原始分片数的因子缩小。

路由机制:当索引一个文档时文档会被存储到master节点上的一个主分片上。Elasticsearch的路由机制是通过哈希算法,将具有相同哈希值的文档放置到同一个主分片中。
Elasticsearch使用文档的id将文档平均分布于所有的分片上,导致Elasticsearch无法确定文档的位置,master将请求广播到所有的分片上执行。主分片的数量在索引创建时是固定的,如果分片的数量改变,原有的路由值就会变成非法,文档相当于丢失。

Elasticsearch中分片和数据库中的只读库类似,都是为了提高读取的速度。

Elasticsearch-索引模板

模板是一种复用机制

{
“order”: 0, // 模板优先级
“template”: “sample_info*”, // 模板匹配的名称方式
“settings”: {…}, // 索引设置
“mappings”: {…}, // 索引中各字段的映射定义
“aliases”: {…} // 索引的别名
}

template大致分成setting和mappings两部分:
settings主要作用于index的一些相关配置信息,如分片数、副本数,tranlog同步条件、refresh等。
mappings主要是一些说明信息,大致又分为_all、_source、prpperties这三部分:
properties:这是最重要的步骤,主要针对索引结构和字段级别上的一些设置

大型网站分布式技术架构书(集合) 大型网站技术架构:核心原理与案例分析+李智慧.pdf 大型分布式网站架构设计与实践.pdf 大型网站系统与JAVA中间件实践.pdf 分布式Java应用基础与实践.pdf 分布式系统常用技术及案例分析.pdf 亿级流量网站架构核心技术 跟开涛学搭建高可用高并发系统.pdf 立即下载

相关推荐

分布式电动汽车底盘结构设计与仿真分析.pdf

#资源达人分享计划#

分布式编译

虽然现在计算机的运算速度不断提高, 但大型软件的编译速度仍然是个漫长的过程,我所在的项目, 软件大小约为200K行, 在VC6下的编译时间为3分钟(P4   1.8G,   512M), 在交叉编译时更慢, 提高编译速度将能够直接提高前期调测的效率. 提高编译速度的有效方法之一 - 分布式编译.     分布式编译的原理很简单, 就是将编译的整个工作量通过分布计算的方法分配到多个计算机上执行,

weekend67的专栏 1519

接口调试必看:status显示canceled的3种常见原因及修复方法

本文深度解析了接口调试中status显示canceled的三种核心原因:网络层中断(如请求超时)、应用层逻辑主动取消(如请求竞态、组件卸载)以及用户交互与浏览器行为。文章提供了从诊断到修复的系统性方案,包括分析Network Timing、使用Axios CancelToken、优化请求策略与性能,帮助开发者从根本上解决这一常见问题。

bb456的博客 937

分布式编译以及如何加快编译速度

众所周知,C++项目的编译时间一般都很就,稍微大一点的项目完全编译可能就需要几十分钟,有的可能需要好几个小时甚至更久。这对于现在的开发人员来说是非常难以忍受的一件事情!所以就有人开发了一种叫做分布式编译的东西,这个东西的思想其实很简单,就是把一个项目中的没有依赖关系的工程分给不同的机器进行同时编译,编译完以后把编译出来的结果传回来。这样的话理论上来说,如果网络内可用的空闲机器数量足够,编译时间可以

成功不必在我,而功力必不唐捐! 1万+

BES2300x笔记(36) -- OTA升级

哈喽大家好,这是该系列博文的第三十六篇~ 篇~ <<【系列博文索引】快速通道 >> 一、前言 BES 蓝牙方案自带 OTA(Over The Air)功能,该功能可以对蓝牙固件进行在线升级,目前该功能支持通过安卓手机(苹果手机也有对应APP,未实际测试)对蓝牙固件进行升级,以后还会支持通过 PC 端进行在线升级。在使用 OTA 功能之前,用户需安装 BES 提供的手机 apk 软件,将需要升级的固件拷贝到手机,然后通过该 apk 软件进行在线升级。

文化人的博客 5356

YOLOv11全方位改进指南:卷积层、轻量化、注意力、损失函数等创新优化一览

YOLOv11通过八大核心模块的创新设计,在保持YOLO系列实时性的同时显著提升检测精度。本文提出的可变形卷积DCNv4多模态注意力动态解耦头等创新方案,已在工业质检、自动驾驶、无人机巡检等领域成功应用。完整项目地址预训练模型:包含从nano到x六个规格在线演示创新声明首次在YOLO系列集成DCNv4,小目标检测AP提升8.2%提出多模态混合注意力(MMAttention),兼顾通道与空间关系动态标签分配策略使训练效率提升40%

QQ_778132974的博客 1019

分布式编译 -- distcc+ccache

今天写netsurf的一篇blog,顺便把之前做的的一个东西给写了,写blog真的是蛮辛苦的一件事。。。就都今天苦了吧,呵呵用distcc,ccache是两年前,项目结束的空隙,自己拿来玩的。当时是在arm上做的一个很大的工程,当时的PC,只编UI部分就需要3个小时,这也是为什么后来我用分布式编译的原因。那个项目是c++加adobe的flash,仿iphone做一款很炫的手机,其中UI全部

vesslan1029的专栏 4040

全志平台camera驱动开发(4)NVP6134芯片4路模拟视频BT656输入

前言 1. 调试平台: 全志V5/T7等有BT656或BT1120的并行接口,理论有DVP接口的一般都支持 2. NVP6134可使用多路视频同时输入 硬件连接 模拟camera1 模拟camera2 NVP6134 ------>NVCSI0 ...

jzwjzw19900922的博客 3532

单体架构到分布式架构浅析

在弄清楚目标之前,我们先了解下分布式架构的缺点,通过了解这些缺点来衡量满足我们目标的前提下,需要进行哪些方面的取舍,就如 CAP 原则一样,只能满足其中的两个,AP 或者 CP。《分布式架构体系》中提到,分布式架构的核心理念是按照功能、业务、领域等对系统进行拆分,通过合理的拆分结构,实现各业务模块的解耦,同时通过系统级容错设计,在廉价硬件基础设施上构建起高可用、可扩展的开放技术体系。在业务初期,单体架构的优点,无论从那个方面来说,都优于其他架构风格,但是随着业务的增加、复杂,单体架构的缺点也逐渐暴露出来。

ldcaws的专栏 2015

C#串口通信从入门到精通(11)——串口接收的数据存储到本地文件(txt、csv)

本文详细介绍如何将串口通信将数据进行本次存储,主要介绍常用的csv、txt格式文件,由多年实战经验总结,绝对干货!

qq_34059233的博客 7238

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

fastadmin管理员页面实现手机验证码登录功能-腾讯云短信插件

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4195

浅析分布式架构

下图解析分布式系统 在分布式系统构架中,涉及到以下几个问题。 负载均衡负载均衡是分布式系统中的一个最最基本的问题。在上图中: 网关需要把请求分发给不同的Tomcat; Tomcat需要把收到的请求,分发给不同的Service; 这都需要负载均衡。一句话:凡是请求从一个入口进来,需要分发给后端不同的机器时,就需要负载均衡。 局域网负载均衡在上图中,负载均衡发生在局域网内部。在...

anchi8683的博客 255

华为OD机试真题 C 实现【水库蓄水问题】【2022.11 Q4 新题】

给定一个长度为 n 的整数数组height。数组的元素表示山的高度,选择两个元素作为水库的边界,求蓄水量的最大值并输出蓄水量最大时的边界下标(蓄水量相同时输出下标较近的)。

MISAYAONE的博客 1万+

Prometheus集群分布式架构浅析

任务生成算法根据当前无人机的数量以及选择的集群队形,生成满足集群队形的无人机数量的任务目标点位。此种软件架构存在一定的弊端,由于所有计算任务都由主节点来完成,当集群控制系统所运行的算法较为复杂、计算任务较为庞大时,对主节点运算单元的性能有极大要求。传统的集中式软件架构工作方式是将集群控制系统的所有任务计算及任务分配工作全部运行在一个主节点的计算单元上,由该主计算单元通过算法计算出任务执行方案,再将该执行方案分发到其它从节点,从节点则按照主节点发布的执行方案执行任务即可。采用分布式软件架构,结合。

AMOVLAB(阿木实验室) 1816

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

浅析Dubbo分布式架构

什么是 Dubbo? Apache Dubbo 是一款高性能、轻量级的开源Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。简单来说 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 **Dubbo 的诞生和 SOA 分布式架构的流行有着莫大的关系。**SOA 面向服务的架构(Service Oriented Architecture),也就是把工程按照业务逻辑拆分成服务层、表现层两个

逾越的博客 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

分布式架构演进过程浅析

一、前言   ​ 我们都知道,当今无论在BAT这样的大公司,还是各种各样的小公司,甚至是传统行业刚转互联网的企业都开始使用分布式架构,那么什么叫分布式架构呢?分布式架构有什么好处呢?分布式架构经过了怎样的发展呢?是哪家企业开启了分布式架构的时代呢?读完本文,你就会得到这些答案,下面让我们一起来开启分布式概述的奇妙之旅吧!   二、分布式架构的发展历史   ​ 1946年2.14日,那是...

风的记忆 462

分布式架构演进,浅析前世与今生

前言 后端开发人员都对“分布式”这3个字既熟悉又陌生。说对它熟悉,是因为自己无时无刻的不身在其中,比如spring mvc、spring boot 、spring cloud、dubbo、spring cloud alibaba、web容器、消息中间件、数据库中间件、redis、nginx等等,日常开发可能或多或少的跟它们打过交道。说陌生,是因为分布式本身就是一个及其复杂且的领域,要把它彻底的说清楚需要去了解CAP理论,BASE理论,以及相关的分布式事务,一致性理论,高可用,通讯节点与网络等等,这些..

PYXLY1314的专栏 673

浅析分布式主从架构下数据一致性问题

主从架构 常见的主从架构,即为一主多从,常见的读写策略为写主读从,并由主节点写日志并通过网络传输来维护从节点的数据库状态,但是这个常见的策略会产生一系列的分布式数据一致性问题。 通常我们使用主从架构,主要是处于以下几个目的: 提高服务的容错性,即使一个节点崩溃了,还存在多个节点可以对外提供服务; 提高服务的响应速度与QPS,存在多个冗余节点可以对外提供服务,自然会降低响应的延迟与提高服务的承受能力;常见的使用策略为CDN,通过在全国各地部署服务器,使得用户可以通过请求最靠近自身的服务器而无需跨较远距离访问

诗与远方的博客 1319

架构解密从分布式到微服务:深入浅析内存,内存计算产品分析

本节对几个经典的内存计算产品进行研究和分析,以了解和掌握分布式内存计算领域的设计思想、设计原则、核心技术等相关知识和技能。

2401_83384536的博客 1171

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

Zookeeper是hadoop的一个子项目,虽然源自hadoop,但是我发现zookeeper脱离hadoop的范畴开发分布式框架的运用 越来越多。今天我想谈谈zookeeper,本文不谈如何使用zookeeper,而是zookeeper到底有哪些实际的运用,哪些类型的应用能发挥 zookeeper的优势,最后谈谈zookeeper对分布式网站架构能产生怎样的作用。   Zookeeper是针

泊川 595
上一篇: 【更新中9】《Java核心技术》读书笔记、总结与感触
单骑走天下
博客等级 码龄15年 9粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值