1. 分布式系统概念:若干独立计算机的集合,内部通过网络联系(2种方法:http和RPC)为了完成共同的任务,使用廉价普通的机器去完成单个计算机无法完成的任务,处理更多的数据。这个集合对用户而言就像单个系统。
2. Nginx 负载均衡:所谓负载均衡就是:就是把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况。实现负载均衡之前我们要先实现反向代理,即请求到某个域名,默认该请求被nginx接收到,然后nginx根据配置,类似DNS解析,nginx会根据配置把特定的请求转发到对应的服务器.
3.
orm->mvc->rpc(放在多台电脑上跑)->soa(云:直接租服务器。如阿里云)
4.
RPC(集合内的多台电脑通信用RPC): 让A电脑 去调用 B电脑 上的方法.
RPC并不是一个具体的技术,而是指整个网络远程调用过程
远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。(....)
RPC即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。
核心: 通信, 序列化:为了对象的传输,需要转换对象的传输。
5.
dubbo(一个通信框架)
Dubbo是一款高性能的Java RPC框架。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。
Dubbo提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。
做的事情: 通信, 序列化:为了对象的传输,需要转换对象的传输
dubbo运行原理:
0. 服务容器负责启动,加载,运行服务提供者。
1. 服务提供者在启动时,向注册中心注册自己提供的服务。
2. 服务消费者在启动时,向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
6. Zookeeper 同样ZooKeeper也可以作为注册中心Registry服务注册中心
Registry服务注册中心Zookeeper。通过前面的Dubbo架构图可以看到,Registry(服务注册中心)在其中起着至关重要的作用。Dubbo官方推荐使用Zookeeper作为服务注册中心。Zookeeper 是 Apache Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbo 服务的注册中心,工业强度较高,可用于生产环境,并推荐使用 。
ZooKeeper是一种分布式协调“服务”,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper通过其简单的架构和API解决了这个问题。 ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
是个服务,需要下载ZooKeeper。
下载dubbo:
注册中心有很多,这里dubbo推荐我们使用ZooKeeper
目前的注册中心如上:
过段时间也是要去学学redis的:
配置:
1.
这里java环境变量:CLASSPATH
记得看自己电脑有没有:
2.这里有个很严重的问题,笔者当时将 zookeeper 的下载到了中文路径下,后来换了个路径,就不报错可以正常启动了
双击 zKCli.cmd ,成功连接到 Zookeepeer。
以后我们真正 连接 Zookeepeer服务端的 客服端是java程序
7.springboot整合dubbo+zookeeper