大型分布式架构设计与实现-第一章SOA(面向服务的体系架构)
拜读了大型分布式架构设计与实现,觉得该书作为入门不错,但内容过于简单,描述过于琐碎,小节之间连续性不强,不适合深入钻研学习。但为了更多的希望向架构师行业靠拢的工程师学习需要,本博客将对上书进行简化讲解。
小公司建议使用单一应用架构,中等公司建议使用垂直应用架构,大公司必须使用分布式应用架构,其中公司规模依靠用户峰值用户访问量进行判断。
分布式应用难点在于远程调用(RPC),而RPC的前提是对象的序列化和反序列化,序列化本质就是对象以二进制进行传输,反序列化就是接收到二进制数据流后恢复为对象。(若读者愿意,可参考Hessian和Protobuf)
分布式传输则需要参考的协议有传输层协议TCP和UDP,应用层协议HTTP,网络层协议IP,这是基础,请各位看官必须详细了解并掌握。
SOA架构中,服务消费者通过服务名称等在众多服务中找到服务的地址列表,称为服务的路由。为了防止服务器集群中某台服务器超负荷运行,就必须找到可靠的方法来均衡访问流量,这种方法称为负载均衡。小公司可以直接硬编码,中等公司直接硬件F5均衡或者采用软件均衡方案:LVS或Nginx。大公司需要服务配置中心,服务配置中心能够动态注册和获取服务信息,并统一管理服务名称和对应列表。建议读者学习ZooKeeper。
几种负载均衡算法简介:1.轮询法 2.随机法 3.源地址Hash法 4.加权轮询法 5.加权随机法6.最小连接数法 等,读者可大致了解。固定算法无法满足需求时,就需要动态配置规则,读者可学习Groovy脚本语言动态配置规则。
大公司一般有一个网关集群,解决安全问题,可参考京东的网关方案。
所以第一章是基本知识普及,但对于初学者必须好好下功夫,把这些知识点掌握。我很尊敬和崇拜作者,但可能是考虑普及基本知识,以及是一个人的著作,所以第一章过多的代码让第一章过于具体,好处是初学者可以一步一步跟着学,坏处是过于简单的东西其实没有必要写出来,给个连接让读者自己去学习更好,当然这是自己的拙见。个人认为第一章的顺序上可以调整的更好,部分内容应该以补充知识或者附录的形式给出会更好,期待作者新的版本更新。
参考文献
[1] 陈康贤.大型分布式网站架构设计与实践.北京:电子工业出版社.2014
大型分布式架构设计与实现-第一章SOA(面向服务的体系架构)的更多相关文章
- SOA——面向服务的体系架构
上一篇博文中提到了"紧耦合"的现象.怎样解决?SOA.採用面向服务的体系架构. 一.What? SOA=Service-oriented Architecture面向服务的体系结构 ...
- 面向服务的体系架构(SOA)
面向服务的体系架构(SOA) 1.面向服务的体系架构(SOA) 面向服务的架构(service-oriented architecture)是Gartner于2O世纪9O年代中期提出的面向服务架构的概 ...
- 面向服务的体系架构SOA
面向服务的体系架构SOA 序言 在.Net的世界中,一提及SOA,大家想到的应该是Web Service,WCF,还有人或许也会在.NET MVC中的Web API上做上标记,然后泛泛其谈! 的确,微 ...
- 说说面向服务的体系架构SOA
序言 在.Net的世界中,一提及SOA,大家想到的应该是Web Service,WCF,还有人或许也会在.NET MVC中的Web API上做上标记,然后泛泛其谈! 的确,微软的这些技术也确实推动着面 ...
- .net架构设计读书笔记--第一章 基础
第一章 基础 第一节 软件架构与软件架构师 简单的说软件架构即是为客户构建一个软件系统.架构师随便软件架构应运而生,架构师是一个角色. 2000年9月ANSI和IEEE发布了<密集性软件架构建 ...
- 面向服务的体系架构 SOA(二) --- 服务的路由和负载均衡
2. 服务的路由和负载均衡 1.2.1 服务化的演变 SOA设计思想:分布式应用架构体系对于业务逻辑复用的需求十分强烈,上层业务都想借用已有的底层服务来快速搭建更多.更丰富的应用,降低新业务开展的人力 ...
- 分布式架构设计(一) --- 面向服务的体系架构 SOA
1.1 基于TCP协议的RPC 1.1.1 RPC名词解释 RPC的全称是Remote Process Call,即远程过程调用,RPC的实现包括客户端和服务端,即服务调用方和服务提供方.服务调用方发 ...
- 面向服务的体系架构 SOA(三) --- Zookeeper API、zkClient API的使用
zookeeper简单介绍及API使用 1.1 zookeeper简介 zookeeper是一个针对大型分布式系统的可靠的协调系统,提供的功能包括配置维护.名字服务.分布式同步.组服务等.zookee ...
- 使用WCF实现SOA面向服务编程—— 架构设计
原文地址:http://www.cnblogs.com/leslies2/archive/2011/03/29/1997889.html SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就 ...
随机推荐
- 树莓派3代B+安装mateubuntu16.04
直接安装会卡在开机后的彩虹界面 所以先直接安装:2019-04-08-raspbian-stretch-lite.img 安装完毕后,直接在Linux环境下读取 /boot /系统分区(系统分区在wi ...
- Element UI toggleRowExpansion用法
背景: 官方说明文档没有具体代码示例 一.官方文档 方法名: toggleRowExpansion 说明: 用于可展开表格,切换某一行的展开状态,如果使用了第二个参数,则是设置这一行展开与否(expa ...
- Open Source 开发工具集
Open Source 开发工具集 转自:http://www.linuxforum.net原作者:gogoliu(Pooh-Bah) 编辑器: vi:老牌编辑器,在各个unix和unix-like平 ...
- python3+ 简单爬虫笔记
import urllib.request import re def getHtml(url): html = urllib.request.urlopen(url).read() return h ...
- ubuntu16.04 pycharm的安装
Ubuntu 16.04安装PyCharm-Python IDE (转:http://www.linuxdiyf.com/linux/26442.html) 我最开始接触的编程语言是C/C++,之后由 ...
- 开发者必备的 12 个 JavaScript 库
现在 web 设计是最有趣的了,做好 web 设计不仅要熟练使用 Javascript,css 和 html 等,还要有自己的创意设计.为了方便大家发挥自己的创意,就产生了很多 JS 框架,Node. ...
- 利用Clang(Python接口)来解析C++
1 背景说明 最近希望利用开源库来解析C++头文件,并做一些自动翻译.自动注释之类的工作.经过两天的调研,发现clang最有希望满足需求.clang提供了三套接口来共外部使用,liblang最适合作为 ...
- dubbo 在不同协议下携带上下文区别
如果走原生的dubbo协议,RpcContext.getContext()里的attarchments和values 是能够在节点间传递的 但如果hessian协议,attarchments和valu ...
- js判断数组里是否有重复元素的方法
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/longzhoufeng/article/details/78840974 第一种方法:但是下面的这种 ...
- ring0与ring3通信方式
修改自: https://blog.csdn.net/wzsy/article/details/54929726 控制码方式详解: https://www.cnblogs.com/lsh123/p/7 ...