系统的发展:架构的演进。遇到问题,解决问题
单点-->集群-->分布式
节点、副本(备份)、中间件(缓存中间件、消息中间件)
中间件,位置在中间,介于业务系统与底层组件(操作系统、数据库)之间。直接操作底层组件,为业务系统提供便利
缓存中间件:memcache、redis
消息中间件(MQ):ActiveMQ、RabbitMQ、Kafka
数据库读写分离、搜索引擎、缓存
垂直分库、水平分库分表
多模块、面向服务SOA
分布式架构的难点与问题
1、第三种形态:超时、未知
2、分布式事务:跨节点事务,A节点成功,B节点失败
3、负载均衡
4、一致性
5、故障的隔离
SOA与微服务
SOA:面向服务架构。随着业务不断发展,系统越来越多,但前端的一个页面的展示内容,可能来自多个系统。后端多个服务,服务之间也会相互调用。怎么让系统清晰呢,SOA,引入了ESB,企业服务总线,多个服务都与企业服务总线交互。
这样带来的好处:
- 有序
- 复用
- 高效
SOA更加关注系统的集成
微服务:业务需要彻底组件化和服务化。没有ESB
SOA,通过ESB通信,所以各Service
领域驱动设计与业务驱动划分
Domain Driver Design
领域即范围,确定边界。从上而下,确定子系统范围。
子系统中,仍可继续划分领域,不同领域在不同包中。
领域设计更贴近于业务,可以与业务卖家都能接受的方式,进行沟通设计
与基于数据库的设计是不同的
CAP与BASE
参见:https://chenjinbo1983.iteye.com/admin/blogs/2431596
CAP:一致性(各分区数据一致)、可用性(即时返回)、分区容忍性(在出现网络分区(比如断网)的情况下,分离的系统也能正常运行)
一致性:
- 强一致性,12306票务
- 弱一致性,银行转账
互联网项目, P是必须满足的,虽然要么CP,要么AP
断网情况下,有分区可用,如果要求一定时间必须数据,即可用性,则一致性得不到保障
如果要求,数据必须得是一致的,那么就必须等待,等待了,就不是高可用了
BASE:
基本可用:和分区容忍性差不多,要求系统是可用的
软状态:由于无法达到,强一致性,所以会有一个软状态,比如支付中,交易处理中
最终一致性:能过消息队列,使消息必达,最终达到一致
Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)
分布式架构下的高可用
1、避免单点
- 负载均衡(软负载,硬负载(F5))
- 热备
- 多机房(两地三机房,同城灾备,异地灾备)
2、应用的高可用
- 故障监控(系统监控(CPU/内存)、链路监控、日志监控)
- 应用的容错设计、自我保护能力(服务降级、限流)
- 数据量(数据分片、读写分离)
CDN 架构及工作原理
step1:用户向localDNS发起请求查询输入域名对应的IP地址(若有缓存直接返回,否则去rootDNS查询);
step2:localDNS迭代向rootDNS查询,逐级迭代,rootDNS=>顶级DNS=>权限DNS;
step3:获得权限DNS后,localDNS向权限DNS发起域名解析请求;
step4:权限DNS通常会将域名CNAME【如果有CNAME则解析CNAME对应的CDN服务,否则的话默认为普通请求,直接返回解析到的IP】到另一个域名,这个域名最终会被指向CDN网络中的智能DNS负载均衡系统;
step5:DNS负载均衡系统通过一些智能算法,将最合适的CDN节点IP地址返回给localDNS;
step6:localDNS将获得的IP地址返回给用户;
step7:用户得到节点的IP地址后,向该节点发起访问请求;
step8:CDN节点返回请求文件,如果该节点中请求的文件不存在,就会再回到源站获取这个文件,然后返回给用户。
网络基础知识
TCP/IP四层模型
TCP三次握手、四次挥手
Socket套接字
bio:阻塞IO ServerSocket
nio:非阻塞IO Selector Channel Buffer
Http:应用层协议,请求报文包括消息行、消息报文和报文体
Https:对HTTP协议传输的数据进行加密。在TCP之上加了一层,之前用的SSL(Secure Sockets Layer),后来采用TLS(Transport Layer Security)
2.1 验证流程
注:文中所写的序号与图不对应但流程是对应的
1 客户端发起一个https的请求,把自身支持的一系列Cipher Suite(密钥算法套件,简称Cipher)发送给服务端
2 服务端,接收到客户端所有的Cipher后与自身支持的对比,如果不支持则连接断开,反之则会从中选出一种加密算法和HASH算法
以证书的形式返回给客户端 证书中还包含了 公钥 颁证机构 网址 失效日期等等。
3 客户端收到服务端响应后会做以下几件事
3.1 验证证书的合法性
颁发证书的机构是否合法与是否过期,证书中包含的网站地址是否与正在访问的地址一致等
证书验证通过后,在浏览器的地址栏会加上一把小锁(每家浏览器验证通过后的提示不一样 不做讨论)
3.2 生成随机密码
如果证书验证通过,或者用户接受了不授信的证书,此时浏览器会生成一串随机数,然后用证书中的公钥加密。
3.3 HASH握手信息
用最开始约定好的HASH方式,把握手消息取HASH值, 然后用 随机数加密 “握手消息+握手消息HASH值(签名)” 并一起发送给服务端
在这里之所以要取握手消息的HASH值,主要是把握手消息做一个签名,用于验证握手消息在传输过程中没有被篡改过。
4 服务端拿到客户端传来的密文,用自己的私钥来解密握手消息取出随机数密码,再用随机数密码 解密 握手消息与HASH值,并与传过来的HASH值做对比确认是否一致。
然后用随机密码加密一段握手消息(握手消息+握手消息的HASH值 )给客户端
5 客户端用随机数解密并计算握手消息的HASH,如果与服务端发来的HASH一致,此时握手过程结束,之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密
因为这串密钥只有客户端和服务端知道,所以即使中间请求被拦截也是没法解密数据的,以此保证了通信的安全
非对称加密算法:RSA,DSA/DSS 加密密钥和解密密钥不同
对称加密算法:AES,RC4,3DES 加解密密钥相同
HASH算法:MD5,SHA1,SHA256 在确认握手消息没有被篡改时
HTTPS关键在于CA证书。服务端发送了证书,客服端可验证证书的有效性,这就确认了服务端是合法性。加密码是客户端生成的,加密码通过公钥加密后,只能由服务端通过私钥解密,解密后,可以计算HASH握手消息,一致,说明客户端是合法的。
相关推荐
hadoop完全分布式搭建课堂笔记,关于如何配置hadoop完全分布式
自己整理的mysql分布式笔记,希望能帮助大家进一步掌握mysql
分布式的资料 简单的利用自己的资源给大家分享,你们懂的,这是四部分。希望大家喜欢,分数有点高,需要的可以跟我说,如果分数不够的话
分布式系统和SOA的介绍与应用 前言 随着系统规模的扩大,分布式架构的应用变得越来越广泛。在这个过程中,系统架构师和开发人员往往会面对如何让不同系统或者服务之间进行有效交互的问题。这些系统可能是由不同的...
SpringCloud 是一套完整的微服务解决方案,它为开发者提供了构建分布式系统所需的工具,包括服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等。...
在分布式系统中,由于多个服务或进程可能同时访问同一资源,线程安全问题成为了一个关键挑战。传统的Java并发工具如`synchronized`关键字和`ReentrantLock`虽然能在单个JVM内有效控制并发,但在分布式环境下就显得...
### 分布式事务学习笔记知识点详解 #### 一、什么是分布式事务 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简单来说,一次大的操作由不同...
FF,全称可能是“Functional Framework”,是一个以分布式为中心的笔记记录者和任务管理器。它采用了先进的技术,如CRDT(Conflict-Free Replicated Data Type)和Haskell编程语言,为用户提供了一种高效、可靠的跨...
【分布式技术相关知识学习笔记】 分布式技术是现代软件开发中的重要组成部分,它涉及多种技术手段,如CORBA、ORB、RPC、RMI以及中间件等,旨在解决大型系统中复杂度、扩展性和高可用性的问题。本笔记将重点讨论EJB...
[分布式专题]00-分布式专题笔记
从给定的文件信息来看,标题和描述都指向了“Java分布式学习笔记01分布式Java应用”,这显然是关于Java在分布式环境下的应用和技术的学习资料。虽然提供的部分内容由于格式问题难以直接解析,但我们可以根据标题、...
标题《第10课 Python分布式计算笔记》所指向的知识点涵盖了分布式计算领域中与Python语言的结合使用。分布式计算是一种将计算任务分布在多个计算节点上协同工作的计算模式。它能够高效利用网络中的多台计算机,通过...
使用SpringBoot开发的基于HBASE的大数据存储分布式云计算笔记(后端) 基于HBASE的大数据存储分布式云计算笔记 云笔记使用大数据成熟的分布式存储解决方案,解决了传统笔记数据日益膨胀,数据丢失等问题。云笔记通过...
Java分布式应用学习笔记 在Java世界中,分布式应用是指由多个独立组件通过网络通信协同工作的系统。这种架构模式常用于构建大规模、高可用性、可扩展的系统。本笔记将深入探讨Java分布式应用的核心概念、技术和实践...
Hadoop完全分布式安装笔记,一步一步安装记录,完全分布式;4台虚拟机。看自己电脑的性能啊。
《分布式系统理论》是一份深入探讨分布式计算领域的珍贵笔记,由James Aspnes撰写并发布在2020年。这份笔记涵盖了异步分布式计算系统的模型、并发与同步的基本概念,以及通信、可靠性和时间复杂性的核心主题。此外,...
本笔记将深入解析阿里巴巴开源的分布式核心技术,帮助读者理解分布式系统的运作原理及其在实际应用中的价值。 首先,我们要了解分布式系统的基本概念。分布式系统是由多台独立的计算机通过网络连接,协同工作以完成...
*数据分布(如何实现数据分布均匀,如何实现夸服务器读写操作) *一致性(如何保证不同复制后的副本的数据一致性) *容错(如何进行故障检查?如何进行故障数据进行迁移?) *负载均衡(新增和减少服务器如何实现...
### Java分布式应用与SOA概览 在深入探讨Java分布式应用和面向服务架构(SOA)之前,我们首先需要理解这两个概念的基本含义及其在现代IT系统中的重要性。 #### Java分布式应用 Java分布式应用是指利用Java编程...
收集分布式的资料 简单的利用自己的资源给大家分享,你们懂的,这是一部分。希望大家喜欢,分数有点高,需要的可以跟我说,如果分数不够的话