SOA思想(微服务代理编辑的标准)

SOA

面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和协议联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。
image.png

RPC思想介绍

RPC是远程过程调用(Remote Procedure Call)的缩写形式。
1.当完成业务时自己没有办法直接完成时,需要通过第三方帮助才能完成的业务。
2.使用RPC时"感觉"上就是在调用自己的方法完成业务。

微服务思想

1.分布式思想(拆)
2.自动化(HA,自动化)

传统项目问题

1.如果采用nginx方式实现负载均衡,当服务数量改变时,都必须手动的修改nginx.conf 配置文件,不够智能。
2.所有的请求都会通过nginx服务器作为中转,如果nginx服务器一旦宕机,则直接影响整个系统,nginx最好只做简单的反向代理即可
所以传统方式的问题就在于不够智能....
image.png

微服务调用方式介绍

image.png
调用步骤:
1.将服务信息写入到注册中心(1.服务名称 2.服务IP地址 3.端口)。
2.注册中心接收到服务器信息,会动态的维护服务列表数据。
3.web服务器启动时会链接注册中心,目的获取服务列表数据。
4.注册中心会将服务列表数据同步给web服务器,并且保存到web服务器本地,以后方便调用。
5.当web服务器开始业务调用时,会根据已知的服务信息进行负载均衡操作,访问后台服务器。
6.当后台服务器宕机时,由于注册中心有心跳检测机制,所以会动态的维护服务列表。
7.当注册中心的服务列表变化时,则会全网广播,通知所有的web服务器更新本地服务列表。

Zookeeper注册中心介绍

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
ZooKeeper包含一个简单的原语集,提供Java和C的接口。
ZooKeeper代码版本中,提供了分布式独享锁、选举、队列的接口,代码在$zookeeper_homesrcrecipes。其中分布锁和队列有Java和C两个版本,选举只有Java版本。
概括: ZK主要的任务是服务的调度,提供一致性的功能.

关于zk数据存储结构

说明:在zk中数据的存储采用树形结构的方式保存
命令: [root@localhost bin]# sh zkCli.sh
查询命令: ls /…
image.png

集群小知识

1、最小的集群单位几台?

公式:存活节点的数量>N/2 则集群可以创建。
例如:
1台: 1-1 > 1/2 不能创建
2台: 2-1> 2/2 不能创建
3台: 3-1> 3/2 可以创建
4台: 4-1> 4/2 可以创建
结论:搭建集群的最小单位是3台!

2、为什么集群一般都是奇数?

1、3台集群最多宕机1台,集群可以正常工作。
2、4台集群最多也是宕机1台,集群可以正常工作。
所以如果实现相同的功能,奇数台更优!

3、关于zk集群选举规则

原则:myid最大值优先原则,myid值越大的越容易当主机,超半数同意即当选主机。
问题:
如果有1,2,3,4,5,6,7台集群
1:谁可以当主机?4可以当主机,根据公式:存活节点的数量>N/2。
2:谁永远不能当选主机?1/2/3永远不能当主机,根据公式:存活节点的数量>N/2。

你可能感兴趣的:(java)