基于 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;

}

相关文章
|
11月前
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
11月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
1331 52
|
11月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
2801 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
10月前
|
消息中间件 分布式计算 资源调度
《聊聊分布式》ZooKeeper与ZAB协议:分布式协调的核心引擎
ZooKeeper是一个开源的分布式协调服务,基于ZAB协议实现数据一致性,提供分布式锁、配置管理、领导者选举等核心功能,具有高可用、强一致和简单易用的特点,广泛应用于Kafka、Hadoop等大型分布式系统中。
|
11月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的&quot;神经网络&quot;,强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,
|
11月前
|
SQL 弹性计算 关系型数据库
如何用读写分离构建高效稳定的数据库架构?
在少写多读业务场景中,主实例读请求压力大,影响性能。通过创建只读实例并使用数据库代理实现读写分离,可有效降低主实例负载,提升系统性能与可用性。本文详解配置步骤,助你构建高效稳定的数据库架构。
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
802 2
|
存储 缓存 NoSQL
【📕分布式锁通关指南 12】源码剖析redisson如何利用Redis数据结构实现Semaphore和CountDownLatch
本文解析 Redisson 如何通过 Redis 实现分布式信号量(RSemaphore)与倒数闩(RCountDownLatch),利用 Lua 脚本与原子操作保障分布式环境下的同步控制,帮助开发者更好地理解其原理与应用。
863 6
|
存储 缓存 NoSQL
Redis核心数据结构与分布式锁实现详解
Redis 是高性能键值数据库,支持多种数据结构,如字符串、列表、集合、哈希、有序集合等,广泛用于缓存、消息队列和实时数据处理。本文详解其核心数据结构及分布式锁实现,帮助开发者提升系统性能与并发控制能力。
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
2021 0
分布式爬虫框架Scrapy-Redis实战指南