部署方式
分布式
一个业务分拆多个子业务,部署在不同的服务器上(不同的服务器,运行不同的代码,为了同一个目的),解决网站高并发带来问题
集群
同一个业务,部署在多个服务器上(不同的服务器,运行相同的代码),多台服务器部署相同应用构成一个集群,通过负载均衡设备共同对外提供服务
SOA
业务系统分解为多个组件,让每个组件都独立提供离散,自治,可复用的服务能力,通过服务的组合和编排来实现上层的业务流程,简化维护,降低整体风险,伸缩灵活
微服务
架构设计概念,各服务间隔离(分布式也是隔离),自治(分布式依赖整体组合)其它特性(单一职责,边界,异步通信,独立部署)是分布式概念的跟严格执行SOA到微服务架构的演进过程
作用:各服务可独立应用,组合服务也可系统应用
Zookeepr
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
zookeeper 未授权访问是指安装部署之后默认情况下不需要任何身份验证,从而导致 zookeeper 被远程利用,导致大量服务级别的信息泄露。
默认端口
2181:对客户端提供服务
3888:选举leader使用
2888:集群内机器通讯使用(Leader监听此端口)
Zookeeper四字命令
conf:输出相关服务配置的详细信息。
cons:列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。包括“接受 / 发送”的包数量、会话 id 、操作延迟、最后的操作执行等等信息。
dump:列出未经处理的会话和临时节点。
envi:输出关于服务环境的详细信息(区别于 conf 命令)。
reqs:列出未经处理的请求
ruok:测试服务是否处于正确状态。如果确实如此,那么服务返回“imok ”,否则不做任何相应。
stat:输出关于性能和连接的客户端的列表。
wchs:列出服务器 watch 的详细信息。
wchc:通过 session 列出服务器 watch 的详细信息,它的输出是一个与watch 相关的会话的列表。
wchp:通过路径列出服务器 watch 的详细信息。它输出一个与 session相关的路径。
Zookeeper单机部署
下载镜像
wget https://downloads.apache.org/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
解压
tar -zxf zookeeper-3.4.5.tar.gz
创建两个文件夹,data 和 logs
复制文件conf/zoo_sample.cfg到zoo.cfg
修改配置文件,修改data和logs为刚才创建的路径
dataDir=/root/zookeeper-3.4.5/data
dataLogDir=/root/zookeeper-3.4.5/logs
查看Zookeeper部署方式:standalone
(单机部署)
客户端测试连接到zk服务区
./zkCli.sh -server 127.0.0.1:2181
可以做一些操作
[zk: 127.0.0.1:2181(CONNECTED) 1] ls / #查看当前Zookeeper中所包含的内容
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 2] create /dudu hello! #创建一个新的Znode节点dudu
Created /dudu
[zk: 127.0.0.1:2181(CONNECTED) 3] get /dudu #get确认第二步中所创建的数据
hello!
cZxid = 0x4
ctime = Fri Nov 06 17:37:39 CST 2020
mZxid = 0x4
mtime = Fri Nov 06 17:37:39 CST 2020
pZxid = 0x4
cversion = 0
dataVersion = 0
aclVersion = 0
ephemeralOwner = 0x0
dataLength = 6
numChildren = 0
[zk: 127.0.0.1:2181(CONNECTED) 4] ls /
[zookeeper, dudu]
[zk: 127.0.0.1:2181(CONNECTED) 5] delete /dudu #删除创建的Znode
[zk: 127.0.0.1:2181(CONNECTED) 6] ls /
[zookeeper]
[zk: 127.0.0.1:2181(CONNECTED) 7]
ACL权限控制
ZK的节点有5种操作权限:CREATE、READ、WRITE、DELETE、ADMIN 也就是 增、删、改、查、管理权限,这5种权限简写为crwda(即:每个单词的首字符缩写)。
注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限
身份的认证有4种方式:
- world:默认方式,相当于全世界都能访问
- auth:代表已经认证通过的用户(cli中可以通过addauth digest user:pwd 来添加当前上下文中的授权用户)
- digest:即用户名:密码这种方式认证,这也是业务系统中最常用的
- ip:使用Ip地址认证
使用[scheme:ID:permissions]来表示acl权限
[zk: 127.0.0.1:2181(CONNECTED) 1] getAcl /zookeeper #获取zookeeper节点的acl权限信息
'world,'anyone
: cdrwa
[zk: 127.0.0.1:2181(CONNECTED) 2] setAcl /zookeeper crwa #设置acl权限,不允许删除
crwa does not have the form scheme:id:perm
Acl is not valid : /zookeeper
[zk: 127.0.0.1:2181(CONNECTED) 3] setAcl /zookeeper world:anyone:crwa
cZxid = 0x0
ctime = Thu Jan 01 08:00:00 CST 1970
mZxid = 0x0
mtime = Thu Jan 01 08:00:00 CST 1970
pZxid = 0x0
cversion = -1
dataVersion = 0
aclVersion = 1
ephemeralOwner = 0x0
dataLength = 0
numChildren = 1
[zk: 127.0.0.1:2181(CONNECTED) 4] getAcl /zookeeper
'world,'anyone
: crwa
[zk: 127.0.0.1:2181(CONNECTED) 5]
四字命令
查看配置文件
查看环境变量