基于 Zookeeper、Dubbo 构建互联网分布式基础架构(1)|学习笔记

简介: 快速学习基于 Zookeeper、Dubbo 构建互联网分布式基础架构(1),使用分布式需要一个注册中心,一个监控中心。原来是将一个项目跑到一些集群上面,而分布式是将一个大的项目分别拆开为多个模块,让其跑到不同的服务器上面,这叫做分布式。

开发者学堂课程【基于 Zookeeper、Dubbo 构建互联网分布式基础架构互联网基础架构演进(3)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/635/detail/10162


基于 Zookeeper、Dubbo 构建互联网分布式基础架构(1)

 

简介:

使用分布式需要一个注册中心,一个监控中心。原来是将一个项目跑到一些集群上面,而分布式是将一个大的项目分别拆开为多个模块,让其跑到不同的服务器上面,这叫做分布式。

优点:

每个 tomkeeper 上的负载就会变低,因此可以集中一部分服务器来满足更高性能的需求,例如秒杀的订单,需要大部分的服务器来处理。

 

一.使用分布式的一些问题

二.注册中心:Zookeeper

三.Dubbo 框架

四.演示功能


一、使用分布式的一些问题

(1)拆完之后会出现新的问题吗?现在有两个模块,二分之一的模块等等,他们之间是如何通信的呢?

例如有A和B两个模块,如果A里面需要用到B,他们分别又在两个不同的服务器上,则可以将其拆分变成服务,将B变成一个服务,A去引用B.

(2)服务之间的问题?A如何找到B然后引用它呢?

因为A和B不在一个服务器上,会出现A是一个集群,B也是一个集群,A要知道B的服务器地址,才能交互,A和B在两台不同的服务器上面,要想进行通信交互必须通过网络,通过网络必须知道互相的地址,但B的地址A是不知道的.

(3)如何让A知道B的地址呢?

A没有办法主动知道B的地址,所以需要找一个连接体,让A去找B,B去找A,这样的过程叫服务的注册和发现.

 

二.注册中心:Zookeeper

服务器交互是需要规范的,不是随便发一个数据就能交互,服务器要定协议,指定A或者B通过途径按照要求来交互,则出现Dubbo框架。

 

三、Dubbo 框架

一种分布式框架,第一种功能为用来分装各种协议,第二种功能为具有服务的治理功能,支持很多协议。

注:服务治理:记录调用的过程)

 

四.演示功能

新建一个项目,创建一个子模块

业务层  发布一个服务

控制层  远程控制业务层

(1) Project

project xmlns-"http://maven,apache.org/P0M/4.0.0"xmlns:xsi-"http://www.w3.org/2001/XMLSchema-xsi:schemaLocation-"http://maven.

apache.org/P0M/4.0.0 http://maven.apache,org/xsd/maven-4.0.0,<modelVersion>4.0.0</modelversion>
<groupId>com. qianfeng</groupId>
<artifactId>tes tduboodemo</artifactId,<vers ion>1.0</version>
<packaging> jar</packaging>
<name>testduboodemor/name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
<dependencies>
<dependency>
<groupId> junit</groupId>
<artifactId>junit</artifactId><version>3.8.1</vers ion>
<scope>test</scope>
</dependency>
</dependencies>
</project>

(2) Testweb

<version>1.0</version>cmodules>
cmodulestestweb</modules</modules>
<packaging>pom</packaging>
<name>test duboodemo</name>
<url>http://maven.apache,org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId><version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId><artifactId>spring-webmvcs/artifactId><version>4.3.13.RELEASE/version>
</dependency>
</dependencies>

(2)testcontroller

import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;
Created by iackiechan on 2018/3/21/下午8:16
@RestController
public class TestController {

//这里应该声明一个service,但是刚才说过,service最终会变成一个web项目,也就是我们无法直接依赖了,但是此处仍然需要声明对象,怎么办?
//解决方式,我们将service 的接口声明和实现进行拆分,如何拆分,将service 创建为一个项目,jar包格式的项目?

为什么这么创建,因为除//control会用到service外,我们的serviceimpl实现中也用到了这个接口
@RequestMapping("/getData")
public String getData(String name ) {

return null;

}

相关文章
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
12月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
1379 52
|
12月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
2901 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
11月前
|
消息中间件 分布式计算 资源调度
《聊聊分布式》ZooKeeper与ZAB协议:分布式协调的核心引擎
ZooKeeper是一个开源的分布式协调服务,基于ZAB协议实现数据一致性,提供分布式锁、配置管理、领导者选举等核心功能,具有高可用、强一致和简单易用的特点,广泛应用于Kafka、Hadoop等大型分布式系统中。
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的&quot;神经网络&quot;,强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
传感器 人工智能 算法
分层架构解耦——如何构建不依赖硬件的具身智能系统
硬件与软件的彻底解耦,并通过模块化、分层的架构进行重构,是突破这一瓶颈、构建通用型具身智能系统的核心基石。这种架构将具身智能系统解耦为三个核心层级:HAL、感知决策层和任务执行层。这一模式使得企业能够利用预置的技能库和低代码工具快速配置新任务,在不更换昂贵硬件的前提下,实现从清洁机器人到物流机器人的快速功能切换。本文将通过对HAL技术原理、VLA大模型和行为树等核心技术的深度剖析,并结合Google RT-X、RobotecAI RAI和NVIDIA Isaac Sim等主流框架的案例,论证这一新范式的可行性与巨大潜力,探讨硬件解耦如何将机器人从一个“工具”升级为“软件定义”的“多面手”,从而
1638 3
|
存储 自然语言处理 前端开发
百亿级知识库解决方案:从零带你构建高并发RAG架构(附实践代码)
本文详解构建高效RAG系统的关键技术,涵盖基础架构、高级查询转换、智能路由、索引优化、噪声控制与端到端评估,助你打造稳定、精准的检索增强生成系统。
2382 2
|
SQL 弹性计算 关系型数据库
如何用读写分离构建高效稳定的数据库架构?
在少写多读业务场景中,主实例读请求压力大,影响性能。通过创建只读实例并使用数据库代理实现读写分离,可有效降低主实例负载,提升系统性能与可用性。本文详解配置步骤,助你构建高效稳定的数据库架构。