大型网站和java中间件_大型网站系统与Java中间件实践

第一章:分布式系统介绍

1.1初始分布式系统

1.1.1分布式系统的定义

两个重点:一是组件分布在网络计算机上,二是组件之间仅仅用过消息传递来通信并协调行动。

分布式系统的定义:分布式系统一定是有多个节点组成的系统,一般来说一个节点就是我们的一台计算机,然后这些节点不是孤立的,而是互相连通的,最后,这些连通的节点上部署了我们的组件,并且相互之间的操作会有协同。

1.1.2分布式系统的意义

为什么要有分布式系统:

升级单机处理能力的性价比越来越低。

单机处理能力存在瓶颈。

出于稳定性和可用性的考虑。

单机处理能力包括:处理器(CPU)、内存、磁盘和网络。

摩尔定律:当价格不变时,每隔18个月,集成电路上可容纳的晶体管数目会增加一倍,性能也将提升一倍。

这个定律高数我们,随着时间的推移,单位成本的支出所能购买的计算能力在提升。不过,如果我们把时间固定下来,也就是固定在每个具体时间点来购买单颗不同型号处理器,那么所购买的处理器性能越高,所要付出的成本就越高,性价比就越低。那么,就是说在一个确定的时间点,通过更换硬件做垂直扩展的方式来提升性能会越来越不划算。除此之外,同样是在某个固定的时间点,单颗处理器有自己的性能瓶颈,也就是说即使你愿意花更多的钱去买计算能力也买不到了,这就是前面提到的第二点。而第三点,强调的是分布式系统带来的稳定性、可用性的提升。如果我们采用单机系统,那么在这台机器正常的时候一切OK,一旦出问题,那么系统就完全不能用了。

1.2分布式系统的基础知识

1.2.1组成计算机的5要素

组成计算机的基本元素包括输入设备、输出设备、运算器、控制器和存储器,存储器又分为内存和外存。在计算机断电时,内存中存储的数据会丢失,而外存则仍然能够保持存储的数据。

1.2.2线程与进程的执行模式

1.2.2.1阿姆达尔定律

8538823_1532699586011_equation?tex=S(N)%3D%5Cfrac%7B1%7D%7B(1-P)%2B%5Cfrac%7BP%7D%7BN%7D%7D

其中,P指的是程序中可并行部分的程序在单核上执行时间的占比,N表示处理器的个数(总核心数)。S(N)是指程序在N隔处理器(总核心数)相对在单个处理器(单核)中的速度提升比。

这个公式告诉我们,程序中可并行代码的比例决定你增加处理器(总核心数)所能带来的速度提升的上限,是否能达到这个上限,还取决于很多其他的因素。例如,当P=0.5时,我们可以计算出速度提升的上限就是2,。而如果P=0.2,速度提升的上限就是1.25.可见,在多核的时代,并发程序的开发或者说提升程序的并发性时多么重要。

1.2.2.2互不通信的多线程模式

6b683642599f601cad9a7353bd1edf6a.png

1.2.2.3基于共享容器协同的多线程模式

7bece04a378ea65f2854014facdac049.png

1.2.2.4通过事件协同的多线程模式

47d1f38c7fc11da1cf6e69202935ee7e.png

1.2.2.5多进程模式

多进程相对于单进程多线程的方式来说,资源控制会更容易实现,此外,多进程中的单个进程问题,不会造成整体的不可用。这两点是多进程区别于单进程多线程方式的两个特点。当然,使用多进程会比多线程稍微复杂一些。多进程间可以共享数据,但是其代价比多线程要大,会涉及序列化与反序列化的开销。

1.2.3网络通信基础知识

1.2.3.1OSI与TCP/IP网络模型

5197b6627938dc7a5a394854d9a1b4d6.png

f99f2a78f1838da672384b6317196e9f.png

1.2.3.2网络IO实现方式

网络模型主要是以太网及TCP/IP协议栈,UDP在一些场景中也会用到。

当我们使用Socket套接字进行网络通信开发时,会用到三种方式:BIO、NIO和AIO。

1.BIO方式

2854d0bc691aff2efa57098a23e74fba.png

2.NIO方式

79151ec9ba110910d733cb88bd51794b.png

5ef00fb731080fe9c9d30ab1148e7c8a.png

3.AIO方式

8795b130858067588afda00bbf7a0055.png

1.2.4如何把应用从单机扩展到分布式

1.2.4.1输入设备的变化

分布式系统由通过网络连接的多个节点组成,那么,输入设备其实可以分为两类,一种是互相连接的多个节点,在接收其他节点传来的信息时,该节点可以看作是输入设备;另外一种就是传统意义的人机交互的输入设备了。

1.2.4.2输出设备的变化

一种是系统中的节点在向

其他节点传递信息

时,该节点可以看作是输出设备;另外一种就是传统意义的人机交互的输出设备,例如终端用户的屏幕等。

1.2.4.3控制器的变化

645bb46233b0e6b80becc92818c7d5c6.png

255ee926f40cea7f4662529a6b8d97f0.png

599502ef11b9cfbfd29d43eddc8e602d.png

64d6112bcade80c2cc0dd0e778611026.png

c553d427c4def1344f6bcf039212e71b.png

1.2.4.4运算器的变化

b88370bdd06b588e2becf9f9bd6eac9a.png

18af06724b15878f176f2da09dec8c0d.png

48cbe5cbd4a300be59a54c33736a9a8f.png

2947635c8b035e18165eca0b802a79f7.png

1be42eb7e3fed1b7b2d5f6be29c7dcb5.png

6931bbe9bc34e3621df06cd1723239ab.png

412f3d4e5c1686b4fb1abdd9f2a519b4.png

1.2.4.5存储器的变化

856f50f5a02316350d74415d32378f4c.png

680385379033bccd1b0a06b84c6a2dcc.png

b903a0d92310a6a432859dcaf1c18d84.png

65afe2c1498fcd947f4e7e052696f075.png

4e191ddd05635dd346d8edfa93d310f8.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值