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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 快速学习基于 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;

}

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
5天前
|
敏捷开发 监控 数据管理
构建高效微服务架构的五大关键策略
【4月更文挑战第20天】在当今软件开发领域,微服务架构已经成为一种流行的设计模式,它允许开发团队以灵活、可扩展的方式构建应用程序。本文将探讨构建高效微服务架构的五大关键策略,包括服务划分、通信机制、数据管理、安全性考虑以及监控与日志。这些策略对于确保系统的可靠性、可维护性和性能至关重要。
|
5天前
|
消息中间件 监控 持续交付
构建高效微服务架构:后端开发的进阶之路
【4月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。微服务架构作为一种新兴的分布式系统设计方式,以其独立部署、易于扩展和维护的特点,成为解决这一问题的关键。本文将深入探讨微服务的核心概念、设计原则以及在后端开发实践中如何构建一个高效的微服务架构。我们将从服务划分、通信机制、数据一致性、服务发现与注册等方面入手,提供一系列实用的策略和建议,帮助开发者优化后端系统的性能和可维护性。
|
1天前
|
Cloud Native Devops 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第24天】 随着企业加速其数字化转型之旅,云原生架构已成为实现敏捷性、可扩展性和持续创新的关键推动力。本文将探讨云原生技术如何助力企业构建灵活的IT环境,支持快速部署新服务,并提高整体业务效率。通过分析微服务、容器化、DevOps和持续集成/持续部署(CI/CD)等关键技术的实践应用,我们将揭示这些元素如何共同塑造出一个响应迅速且高效的企业架构模型。
|
1天前
|
持续交付 API 开发者
构建高效微服务架构:后端开发的新范式
【4月更文挑战第24天】 随着现代软件系统的复杂性日益增加,传统的单体应用已难以满足快速迭代与灵活扩展的需求。微服务架构作为一种新兴的软件开发模式,以其服务的细粒度、独立部署和弹性伸缩等优势,正在逐渐成为后端开发的重要趋势。本文将深入探讨微服务架构的设计原则、关键技术以及在实际业务中的应用实践,旨在为后端开发者提供构建和维护高效微服务架构的参考指南。
|
3天前
|
监控 API 持续交付
构建高效微服务架构:后端开发的新趋势
【4月更文挑战第23天】 随着现代软件开发实践的不断演进,微服务架构已经成为企业追求敏捷、可扩展和弹性解决方案的首选。本文深入探讨了如何构建一个高效的微服务架构,涵盖了关键的设计原则、技术选型以及实践建议。通过分析微服务的独立性、分布式特性和容错机制,我们将揭示如何利用容器化、服务网格和API网关等技术手段,来优化后端系统的可维护性和性能。文章旨在为后端开发人员提供一套全面的指南,以应对不断变化的业务需求和技术挑战。
|
5天前
|
Cloud Native API 持续交付
构建未来:云原生架构在企业数字化转型中的关键作用
【4月更文挑战第21天】 随着企业加速其数字化转型的步伐,云原生技术已迅速成为推动创新和实现敏捷性的基石。本文深入探讨了云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及声明式API。通过分析这些技术的协同效应,揭示了它们如何共同促进系统的可伸缩性、弹性和维护性,进而支持企业在不断变化的市场环境中保持竞争力。
10 1
|
5天前
|
敏捷开发 Cloud Native 持续交付
构建未来:云原生架构的进化之路
【4月更文挑战第21天】随着数字化转型的深入,企业对IT基础设施的要求日益提高。云原生技术以其灵活性、可扩展性和敏捷性成为推动创新的重要力量。本文将探讨云原生架构的核心组件,分析其如何助力企业实现快速迭代和高效运营,并预测云原生技术的发展趋势。
|
14天前
|
监控 负载均衡 Cloud Native
ZooKeeper分布式协调服务详解:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析ZooKeeper分布式协调服务原理,涵盖核心概念如Server、Client、ZNode、ACL、Watcher,以及ZAB协议在一致性、会话管理、Leader选举中的作用。讨论ZooKeeper数据模型、操作、会话管理、集群部署与管理、性能调优和监控。同时,文章探讨了ZooKeeper在分布式锁、队列、服务注册与发现等场景的应用,并在面试方面分析了与其它服务的区别、实战挑战及解决方案。附带Java客户端实现分布式锁的代码示例,助力提升面试表现。
30 2
|
3月前
|
消息中间件 Java 网络安全
JAVAEE分布式技术之Zookeeper的第一次课
JAVAEE分布式技术之Zookeeper的第一次课
70 0
|
1月前
|
监控 NoSQL Java
Zookeeper分布式锁
Zookeeper分布式锁
90 1