如何用java 建立一个分布式系统

如何用java 建立一个分布式系统,第1张

分布式架构的演进
系统架构演化历程-初始阶段架构
初始阶段 的小型系统 应用程序、数据库、文件等所有的资源都在一台服务器上通俗称为LAMP
特征:
应用程序、数据库、文件等所有的资源都在一台服务器上。
描述:
通常服务器 *** 作系统使用Linux,应用程序使用PHP开发,然后部署在Apache上,数据库使用MySQL,汇集各种免费开源软件以及一台廉价服务器就可以开始系统的发展之路了。
系统架构演化历程-应用服务和数据服务分离
好景不长,发现随着系统访问量的再度增加,webserver机器的压力在高峰期会上升到比较高,这个时候开始考虑增加一台webserver
特征:
应用程序、数据库、文件分别部署在独立的资源上。
描述:
数据量增加,单台服务器性能及存储空间不足,需要将应用和数据分离,并发处理能力和数据存储空间得到了很大改善。
系统架构演化历程-使用缓存改善性能
特征:
数据库中访问较集中的一小部分数据存储在缓存服务器中,减少数据库的访问次数,降低数据库的访问压力。
描述:
系统访问特点遵循二八定律,即80%的业务访问集中在20%的数据上。
缓存分为本地缓存和远程分布式缓存,本地缓存访问速度更快但缓存数据量有限,同时存在与应用程序争用内存的情况。
系统架构演化历程-使用应用服务器集群
在做完分库分表这些工作后,数据库上的压力已经降到比较低了,又开始过着每天看着访问量暴增的幸福生活了,突然有一天,发现系统的访问又开始有变慢的趋势了,这个时候首先查看数据库,压力一切正常,之后查看webserver,发现apache阻塞了很多的请求,而应用服务器对每个请求也是比较快的,看来 是请求数太高导致需要排队等待,响应速度变慢
特征:
多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
描述:
使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈。
系统架构演化历程-数据库读写分离
享受了一段时间的系统访问量高速增长的幸福后,发现系统又开始变慢了,这次又是什么状况呢,经过查找,发现数据库写入、更新的这些 *** 作的部分数据库连接的资源竞争非常激烈,导致了系统变慢
特征:
多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。
描述:
使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,使得服务器的负载压力不在成为整个系统的瓶颈。
系统架构演化历程-反向代理和CDN加速
特征:
采用CDN和反向代理加快系统的 访问速度。
描述:
为了应付复杂的网络环境和不同地区用户的访问,通过CDN和反向代理加快用户访问的速度,同时减轻后端服务器的负载压力。CDN与反向代理的基本原理都是缓存。
系统架构演化历程-分布式文件系统和分布式数据库
随着系统的不断运行,数据量开始大幅度增长,这个时候发现分库后查询仍然会有些慢,于是按照分库的思想开始做分表的工作
特征:
数据库采用分布式数据库,文件系统采用分布式文件系统。
描述:
任何强大的单一服务器都满足不了大型系统持续增长的业务需求,数据库读写分离随着业务的发展最终也将无法满足需求,需要使用分布式数据库及分布式文件系统来支撑。
分布式数据库是系统数据库拆分的最后方法,只有在单表数据规模非常庞大的时候才使用,更常用的数据库拆分手段是业务分库,将不同的业务数据库部署在不同的物理服务器上。
系统架构演化历程-使用NoSQL和搜索引擎
特征:
系统引入NoSQL数据库及搜索引擎。
描述:
随着业务越来越复杂,对数据存储和检索的需求也越来越复杂,系统需要采用一些非关系型数据库如NoSQL和分数据库查询技术如搜索引擎。应用服务器通过统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的麻烦。
系统架构演化历程-业务拆分
特征:
系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署。
描述:
为了应对日益复杂的业务场景,通常使用分而治之的手段将整个系统业务分成不同的产品线,应用之间通过超链接建立关系,也可以通过消息队列进行数据分发,当然更多的还是通过访问同一个数据存储系统来构成一个关联的完整系统。
纵向拆分:
将一个大应用拆分为多个小应用,如果新业务较为独立,那么就直接将其设计部署为一个独立的Web应用系统
纵向拆分相对较为简单,通过梳理业务,将较少相关的业务剥离即可。
横向拆分:将复用的业务拆分出来,独立部署为分布式服务,新增业务只需要调用这些分布式服务
横向拆分需要识别可复用的业务,设计服务接口,规范服务依赖关系。
系统架构演化历程-分布式服务
特征:
公共的应用模块被提取出来,部署在分布式服务器上供应用服务器调用。
描述:
随着业务越拆越小,应用系统整体复杂程度呈指数级上升,由于所有应用要和所有数据库系统连接,最终导致数据库连接资源不足,拒绝服务。
Q:分布式服务应用会面临哪些问题?
A:
(1) 当服务越来越多时,服务URL配置管理变得非常困难,F5硬件负载均衡器的单点压力也越来越大。
(2) 当进一步发展,服务间依赖关系变得错踪复杂,甚至分不清哪个应用要在哪个应用之前启动,架构师都不能完整的描述应用的架构关系。
(3) 接着,服务的调用量越来越大,服务的容量问题就暴露出来,这个服务需要多少机器支撑?什么时候该加机器?
(4) 服务多了,沟通成本也开始上升,调某个服务失败该找谁?服务的参数都有什么约定?
(5) 一个服务有多个业务消费者,如何确保服务质量?
(6) 随着服务的不停升级,总有些意想不到的事发生,比如cache写错了导致内存溢出,故障不可避免,每次核心服务一挂,影响一大片,人心慌慌,如何控制故障的影响面?服务是否可以功能降级?或者资源劣化?
Java分布式应用技术基础
分布式服务下的关键技术:消息队列架构
消息对列通过消息对象分解系统耦合性,不同子系统处理同一个消息
分布式服务下的关键技术:消息队列原理
分布式服务下的关键技术:服务框架架构
服务框架通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务启用
服务框架是一个点对点模型
服务框架面向同构系统
适合:移动应用、互联网应用、外部系统
分布式服务下的关键技术:服务框架原理
分布式服务下的关键技术:服务总线架构
服务总线同服务框架一样,均是通过接口分解系统耦合性,不同子系统通过相同的接口描述进行服务启用
服务总线是一个总线式的模型
服务总线面向同构、异构系统
适合:内部系统
分布式服务下的关键技术:服务总线原理
分布式架构下系统间交互的5种通信模式
request/response模式(同步模式):客户端发起请求一直阻塞到服务端返回请求为止。
Callback(异步模式):客户端发送一个RPC请求给服务器,服务端处理后再发送一个消息给消息发送端提供的callback端点,此类情况非常合适以下场景:A组件发送RPC请求给B,B处理完成后,需要通知A组件做后续处理。
Future模式:客户端发送完请求后,继续做自己的事情,返回一个包含消息结果的Future对象。客户端需要使用返回结果时,使用Future对象的get(),如果此时没有结果返回的话,会一直阻塞到有结果返回为止。
Oneway模式:客户端调用完继续执行,不管接收端是否成功。
Reliable模式:为保证通信可靠,将借助于消息中心来实现消息的可靠送达,请求将做持久化存储,在接收方在线时做送达,并由消息中心保证异常重试。
五种通信模式的实现方式-同步点对点服务模式
五种通信模式的实现方式-异步点对点消息模式1
五种通信模式的实现方式-异步点对点消息模式2
五种通信模式的实现方式-异步广播消息模式
分布式架构下的服务治理
服务治理是服务框架/服务总线的核心功能。所谓服务治理,是指服务的提供方和消费方达成一致的约定,保证服务的高质量。服务治理功能可以解决将某些特定流量引入某一批机器,以及限制某些非法消费者的恶意访问,并在提供者处理量达到一定程度是,拒绝接受新的访问。
基于服务框架Dubbo的服务治理-服务管理
可以知道你的系统,对外提供了多少服务,可以对服务进行升级、降级、停用、权重调整等 *** 作
可以知道你提供的服务,谁在使用,因业务需求,可以对该消费者实施屏蔽、停用等 *** 作
基于服务框架Dubbo的服务治理-服务监控
可以统计服务的每秒请求数、平均响应时间、调用量、峰值时间等,作为服务集群规划、性能调优的参考指标。
基于服务框架Dubbo的服务治理-服务路由
基于服务框架Dubbo的服务治理-服务保护
基于服务总线OSB的服务治理-功能介绍
基于服务总线OSB的服务治理
Q:Dubbo到底是神马?
A:
淘宝开源的高性能和透明化的RPC远程调用服务框架
SOA服务治理方案
Q:Dubbo原理是?
A:
-结束-

在计算机系统上配置 *** 作系统的主要目标,首先与计算机系统的规模有关。通常对配置在大中型计算机系统中的OS,由于计算机价格昂贵,因此都比较看重机器使用的有效性,而且还希望OS具有非常强的功能;但对于配置在微机中的计算机 *** 作系统,由于微机价格相对比较便宜,此时机器使用的有效性也就显得不那么重要了,而人们更关注的是使用的方便性。
影响 *** 作系统的主要目标的另一个重要因素是 *** 作系统的应用环境。例如,对于应用在查询系统中的 *** 作系统,应满足用户对响应时间的要求;又如对应用在实时工业控制和武器控制环境下的OS,则要求其OS具有实时性和高度可靠性。 目前微机上常见的 *** 作系统有DOS、OS/2、UNIX、XENIX、LINUX、Windows、Netware等。但所有的 *** 作系统具有并发性、共享性、虚拟性和不确定性四个基本特征。
*** 作系统大致可分为6种类型。
① 简单 *** 作系统。它是计算机初期所配置的 *** 作系统,如IBM公司的磁盘 *** 作系统DOS/360和微型计算机的 *** 作系统CP/M等。这类 *** 作系统的功能主要是 *** 作命令的执行,文件服务,支持高级程序设计语言编译程序和控制外部设备等。
② 分时系统。它支持位于不同终端的多个用户同时使用一台计算机,彼此独立互不干扰,用户感到好像一台计算机全为他所用。
③ 实时 *** 作系统。它是为实时计算机系统配置的 *** 作系统。其主要特点是资源的分配和调度首先要考虑实时性然后才是效率。此外,实时 *** 作系统应有较强的容错能力。
④ 网络 *** 作系统。它是为计算机网络配置的 *** 作系统。在其支持下,网络中的各台计算机能互相通信和共享资源。其主要特点是与网络的硬件相结合来完成网络的通信任务。
⑤ 分布 *** 作系统。它是为分布计算系统配置的 *** 作系统。它在资源管理,通信控制和 *** 作系统的结构等方面都与其他 *** 作系统有较大的区别。由于分布计算机系统的资源分布于系统的不同计算机上, *** 作系统对用户的资源需求不能像一般的 *** 作系统那样等待有资源时直接分配的简单做法而是要在系统的各台计算机上搜索,找到所需资源后才可进行分配。对于有些资源,如具有多个副本的文件,还必须考虑一致性。所谓一致性是指若干个用户对同一个文件所同时读出的数据是一致的。为了保证一致性, *** 作系统须控制文件的读、写、 *** 作,使得多个用户可同时读一个文件,而任一时刻最多只能有一个用户在修改文件。分布 *** 作系统的通信功能类似于网络 *** 作系统。由于分布计算机系统不像网络分布得很广,同时分布 *** 作系统还要支持并行处理,因此它提供的通信机制和网络 *** 作系统提供的有所不同,它要求通信速度高。分布 *** 作系统的结构也不同于其他 *** 作系统,它分布于系统的各台计算机上,能并行地处理用户的各种需求,有较强的容错能力。
⑥ 智能 *** 作系统(见智能软件)。 早期 *** 作系统(专利保护)
TRS-DOS,ROM OS's
TI99-4
Commodore PET,64,和 VIC-20,
第一套IBM-PC
苹果电脑
Sinclair Micro和QnX等
非Unix商业 *** 作系统
CPM *** 作系统
MP/M-80
UCSD P-system
Mini-FLEX
SSB-DOS
CP/M-86
DR-DOS
FreeDOS
MS-DOS
PC-DOS
Mach 由卡纳尼基梅隆大学研究
L4微内核 第二代微内核
CHORUS
Choices
Multics
OS-9
NSJ
Netware:一种网络服务器 *** 作系统
Unix及类似系统
A/UX(Apple UNIX)
Unix
微软Xenix
ChorusOS
Cromix
UNIflex
OS-9
IBM的AIX
BSD
FreeBSD
NetBSD
OpenBSD
DragonFly BSD
PC-BSD
Digital UNIX,即之后康柏Tru64
DNIX
HP的HP-UX
GNU/Hurd
SGI的IRIX
Inferno
Linux(或称GNU/Linux)
Mac OS X
MenuetOS
Minix
OSF/1
Plan9
SCO的SCO UNIX
Sun的SunOS,即之后的Solaris
System V
Ultrix
UniCOS
麒麟 *** 作系统(Kylin),由国防科技大学、中软公司、联想公司、浪潮公司和民族恒星公司五家单位合作研制的服务器 *** 作系统
OS/390
z/OS
Syllable
其他
Acorn
Arthur
ARX
RISC OS
RISCiX
Amiga
AmigaOS
Atari ST
TOS
MultiTOS
MiNT
苹果电脑(Apple/Macintosh)
Apple DOS
ProDOS
Mac OS
Mac OS X
pink OS
BeOS
A/UX
Be
BeOS
BeIA
Digital/康柏(Compaq)
AIS
OS-8
RSTS/E
RSX-11
RT-11
TOPS-10
TOPS-20
VMS(后更名为OpenVMS)
IBM
OS/2
AIX
OS/400
OS/390
VM/CMS
DOS/VSE
VSE/SP
VSE/ESA
OS/360
MFT
MVT
SVS
MVS
TPF
ALCS
z/OS
PC-DOS
pink OS
微软(Microsoft)
MS-DOS
Xenix
Microsoft Bob
基于MS-DOS *** 作系统的Windows
Windows 10
Windows 20
Windows 31
windows 32
Windows 95
Windows 98
Windows ME
Windows NT
Windows NT 35
Windows NT 4
Windows 200
Windows XP
Windows XP SP1
Windows XP SP2
Windows XP SP3
Windows XP Media Center Edition
Windows XP Home Edition
Windows XP Tablet PC Edition
Windows XP Professional
Windows XP Professional x64 Edition
Windows Server 2003
Windows Server 2003 64-bit Edition
Windows Vista
Windows Vista SP1
Windows Vista Home Basic
Windows Vista Home Premium
Windows Vista Business
Windows Vista Ultimate
Windows Vista Enterprise
Windows Vista Starter
Novell
NetWare
Unixware
SUSE Linux
NeXT
NEXTSTEP(即之后的Mac OS X)
Plan 9
Inferno
Prime Computer
Primos
西门子
BS2000 - 用于西门子公司的大型主机。
SINIX(也称Reliant UNIX) - 用于西门子公司的UNIX电脑系统。
个人电子助理(PDA) *** 作系统
Palm OS
Pocket PC
EPOC
Microsoft Windows CE
Linux
智能手机 *** 作系统
Windows Mobile系列
Embedded Linux由Montavista创造,在Motorola's A760,E680等机型上使用
Mobilinux由Montavista创造
Symbian OS系列
其他 *** 作系统
动态可扩展 *** 作系统
MIT的Exo Kernel
华盛顿大学的 SPIN
哈佛大学的 VINO
illinois大学的Choices
ReactOS

如果你说oracle卖的是数据库,那么大错特错。
oracle是卖的行业解决方案。
比如说OSB,SOA这些架构理念下的一些组件。他们都卖。
分布式缓存,等等,很多。
不光是软件,还有硬件服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10596407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存