一     soa架构

'支持海量的并发'

互联网的发展趋势

######单机时代

lnmp -->所有的服务都在一台机器上,是'单机时代','所有的鸡蛋放大一个篮子里面'

######集群时代

特点:把单机的服务做了拆分

linux:CDN                   *2('回源')

linux0: nginx                *2

linux1:httpd+php            *5(session共享)

linux2:mysql                *2(主从复制和高可用)

问题1:'性能不够'或者单点故障,多台服务器('高可用架构')-->5个服务器('nginx作为负载均衡提供访问入口'),解决用户访问的问题

问题2:用户上传图片,不可能有的web服务器有上传图片,有的web服务器没有

解决:共享存储,用分布式存储('ceph'和'GFS'以及'MFS')

##分割线

问题3:集群要解决session共享问题

方案1:'写到数据库中',公用一个数据库就解决了-->'wordpress','discuss论坛'

方案2:'以文件形式存在',需要把文件所在共享目录共享出来

##分割线

服务器数量多-->意味着用户量上来了-->数据库的I/O性能会变差!

'数据库瓶颈':把IDE硬盘换成固态硬盘,增加读写性能,能缓解下

进一步'缓存':加缓存(redis实现,用哨兵做高可用)

数据库会成为最终的瓶颈--->进一步缓解-->'读写分离','分库分表'的手段

问题:'业务耦合'

######SOA时代

以前是服务的拆分,现在是'业务的拆分'

'秒杀的业务-->有上面所有的结构,数据库的表(此时只需要10个)'-->只跑某一个'功能'

'优惠券业务'-->也有上面完整的集群结构

'京东的二级域名',已经快突破两位数(max-99),业务'完全拆分'

以前500张表(所有的业务),现在10张表(每个业务)

需求1:使用了秒杀不能用优惠券

事务:'银行卡转账'

A  1000

B  5000

B给A转1000  --->B - 1000;A + 1000 -->B转玩钱突然停电了(A没有增加) ,B肯定不愿因了!

'B转钱和A增加钱是一个整体',不能满足则回滚,到赚钱前的状态!

'同一个库''不同的表'可以实现'事务的一致性'

'不同库的不同表'不能实现'事务的一致性' --->用'消息队列'来解决

消息队列

功能之一:完成事务的'一致性',还有其他的功能

消息队列的功能:在'SOA架构上'实现'数据的一致性'

#######如何完成事务的的'一致性'

'场景':用户买东西,从'钱包'扣钱,由于使用了优惠券,所以会少扣钱

'重点':涉及多业务之间的相互调用问题,这个步骤不可能一下完成,需要分别完成,'完成的进度'都在'写在消息队列里面',只要这个事情'没有最终完成就回滚'-->'开发写代码来实现的'

跨网站的登录问题

需求:登录一个网站,在其他网站也是登录的--->'授权中心(登录认证)'

每次在'授权中心登录',那么登录其他相关联的业务网站就认为'已经登录了'

SOA解决的问题

## SOA解决的问题

'面向服务的架构'(SOA)是一个组件模型

授权中心:'完成中心登录认证,token(令牌),授权中心完成令牌的分发'

消息队列:'完成事务的一致性'

二     openstack架构

openstack是'基于soa架构'的

############分割线

keystone:'授权中心'-->认证服务

glace:   '镜像服务'-->创建云主机你得有一个模板,不可能当前装系统,提前装好系统,做成模板-->管理模板

nova:    '计算服务'-->提供'云主机的'

neutron:  为计算服务提供'网路服务'-->云主机是否能上网('内网和外网'),用的电信或者联通

cinder:   存储服务-->云主机用着用着,硬盘不够,需要扩硬盘-->专门管理块存储

horizon:  'web界面'--->可视化这么多服务,操作特别不方便,提供一个web界面,点一点就可以创建云主机

以上'最简单的'6个服务

补充

既然是soa架构,每个服务都有'自己的数据库,缓存'

由于'服务器资源比较紧张',每个服务的数据库放在一个里面

原理图 

openstack是超融合吗 openstack采用什么架构_SOA

补充说明

## 新版本的openstack把下面三个去掉了

Heat:      编排去掉了;不习惯它的'语法',手动启

Cellometer: openstack定位'私有云',不租给别人,不收自己钱,不用监控了;多一个服务多资源'

Swift:      '对象存储';私有云不使用了

块储存、对象存储、文件存储的区别和联系

存储通俗易懂的理解

各组件逻辑关系

openstack是超融合吗 openstack采用什么架构_数据库_02