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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 快速学习基于 Zookeeper、Dubbo 构建互联网分布式基础架构(2)

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

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


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

 

目录:

一. TestService

二. testweb

三. Testcontroller

四. Testserviceimpl

五. Apllicationcontext.xml

六. web 配置文件

七. 引入 dubbo

 

一.testService

Create by jackiechan on 2018/3/21/下午8:21

Publice interface testservice

此方法在此处没有任何意义,纯粹是为了演示拆分

@param name

@return

String getdata(string name);

注:做 controller 时一定需要 testservice 但在输入时却发现没有,原因是因为没有依赖,依赖要在本地仓库里寻找如果没有则再远程服务包寻找。

将 service 添加为依赖首先要放在本地仓库数据包里,添加成功后进行查看

 

二、testweb 包

xsi:schemaLocat ion="http://maven.apache.org/P0H/4.0.0http:maven,apache.org/maven-v4_0_0

<parent><artifac tId>testduboodemo</artifactId

<groupId>com.qianfeng</groupId>

<version>1.0</version>

</parent>

<modelVersion>4.0.0</modelVersion>

<artifactId>testweb</artifactId>

<name>testweb</name>

<urbhttp://maven.apache.org</url

<packaging>war</packaging>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId

<version>4.12</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.1.0</version>

cscope>provided</scope»

</dependency>

</dependencies>

 

三.testcontroller

import com.qianfeng.testduboo.TestService;

import org.springframework,web.bind.annotation.RequestMapping;

import org.springframework,wcb.bind.annotation.Restcontroller;
import javax,annotation,Resource;
Created by jackiechan on 2018/3/21/下午8:16
@RestController
public class TestController
//这里声明一个service,service最终会变成一个 web 项目,也就是无法直接依赖,此处仍然需要声明对象.

//解决方式,我们将 service 的接口声明和实现进行拆分,将 service 创建为一个项目,jar包格式的项目.

//会用到service项目,serviceimpl 实现中也用到了这个接口
@Resource
private TestService service;
@Reques tMapping("/getData")
public string getData(String name)
string data = service.getData(name);
return


四.testserviceimpl

import com.qianfeng.testduboo.TestService;

import org.spring framework.stereotype.Service;

@Service("testServiceImpl")

public class TestServiceImplt implements TestService

@override
public string getData(String name )
return "你传递的数据是"+name ;

 

五.Apllicationcontext.xml

<?xml version-"1.0"encoding="UTF-8"7>

<beansxmlns="http://www,springframework,org/schema/beans"

xmlns:xsi-"http://www.w3,org/2001/XMLSchema-instance"

xmlns:aop="http:(www.springframework.org/schema/aop"

xm Lns:dubbo-"http://code.alibabatech.com/schema/dubbo"

xmlns:context="http://www.springframework.org/schema/context"

xsi:schemaLocation-"

<!扫描注解-->

<context:component-scanbase-package ="com,gianfeng"/>
<!--使用dubbo的另外一个原因,可以和spring无缝整合-->
<!--目的:
找到注册中心,告诉它我是谁,我的端口是多少
<!--配置别名,目的是在后台可以看到这个服务的别名,好区分到底是谁,这个参数可以随便写,但是最好是通俗易懂-->dubbo:application name="test1"/>
<!--2配置注册中心
address 注册中心的地址,protocol 指的是注册中心的协议格式<dubbo:registry.address="192.168.3.224:2181" .protocol="zookeeper"/>

interface 代表的就是类型
ref代表的就是到底具体发布哪个服务 timeout 连接超时时间
<dubbo:service interface="com.gianfeng.testduboo.TestService"ref="* imeoute"6000" />

</beans>


六.web 配置文件

<web-app xmlns-"http://xmlns.jcp.org/xml/ns/javaee"

xmlns:xsi="http:1/www3.org/2001/XMLSchema-instance"

xSi:schemaLocation-"http://xmlns.jcp.org/xml/ns/javaee

http://xmlns.jcp.org/xml/ns/javaee/web-app_31.xsd"

version-"3.1"

metadata-complete-"true",

<context-param>

<param-name>contextConfigLocaton</param-name>

<param-value>claspath:ApplicationContext.xml</param-value>

</context-param>

<listener>

<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener

</web-app>

 

七.引入 dubbo

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.9</version>
<exclusions>
<exclusion>
<groupId>org,springframework</groupId»<artifactId>spring</artifactId>
</exclusion>

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
2月前
|
人工智能 前端开发 Java
DDD四层架构和MVC三层架构的个人理解和学习笔记
领域驱动设计(DDD)是一种以业务为核心的设计方法,与传统MVC架构不同,DDD将业务逻辑拆分为应用层和领域层,更关注业务领域而非数据库设计。其四层架构包括:Interface(接口层)、Application(应用层)、Domain(领域层)和Infrastructure(基础层)。各层职责分明,避免跨层调用,确保业务逻辑清晰。代码实现中,通过DTO、Entity、DO等对象的转换,结合ProtoBuf协议,完成请求与响应的处理流程。为提高复用性,实际项目中可增加Common层存放公共依赖。DDD强调从业务出发设计软件,适应复杂业务场景,是微服务架构的重要设计思想。
|
5月前
|
自然语言处理 JavaScript Java
《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》学习笔记——HarmonyOS架构介绍
HarmonyOS采用分层架构设计,从下至上分为内核层、系统服务层、框架层和应用层。内核层支持多内核设计与硬件驱动;系统服务层提供核心能力和服务;框架层支持多语言开发;应用层包括系统及第三方应用,支持跨设备调度,确保一致的用户体验。
348 81
|
5月前
|
存储 SpringCloudAlibaba Java
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论。
【SpringCloud Alibaba系列】一文全面解析Zookeeper安装、常用命令、JavaAPI操作、Watch事件监听、分布式锁、集群搭建、核心理论
|
4月前
|
人工智能 安全 Java
微服务引擎 MSE:打造通用的企业级微服务架构
微服务引擎MSE致力于打造通用的企业级微服务架构,涵盖四大核心内容:微服务技术趋势与挑战、MSE应对方案、拥抱开源及最佳实践。MSE通过流量入口、内部流量管理、服务治理等模块,提供高可用、跨语言支持和性能优化。此外,MSE坚持开放,推动云原生与AI融合,助力企业实现无缝迁移和高效运维。
159 1
|
6月前
|
存储 运维 NoSQL
分布式读写锁的奥义:上古世代 ZooKeeper 的进击
本文作者将介绍女娲对社区 ZooKeeper 在分布式读写锁实践细节上的思考,希望帮助大家理解分布式读写锁背后的原理。
172 11
|
7月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
109 2
|
7月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
137 1
|
2月前
|
数据采集 存储 数据可视化
分布式爬虫框架Scrapy-Redis实战指南
本文介绍如何使用Scrapy-Redis构建分布式爬虫系统,采集携程平台上热门城市的酒店价格与评价信息。通过代理IP、Cookie和User-Agent设置规避反爬策略,实现高效数据抓取。结合价格动态趋势分析,助力酒店业优化市场策略、提升服务质量。技术架构涵盖Scrapy-Redis核心调度、代理中间件及数据解析存储,提供完整的技术路线图与代码示例。
213 0
分布式爬虫框架Scrapy-Redis实战指南
|
3月前
|
NoSQL Java 中间件
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
本文介绍了从单机锁到分布式锁的演变,重点探讨了使用Redis实现分布式锁的方法。分布式锁用于控制分布式系统中多个实例对共享资源的同步访问,需满足互斥性、可重入性、锁超时防死锁和锁释放正确防误删等特性。文章通过具体示例展示了如何利用Redis的`setnx`命令实现加锁,并分析了简化版分布式锁存在的问题,如锁超时和误删。为了解决这些问题,文中提出了设置锁过期时间和在解锁前验证持有锁的线程身份的优化方案。最后指出,尽管当前设计已解决部分问题,但仍存在进一步优化的空间,将在后续章节继续探讨。
619 131
【📕分布式锁通关指南 02】基于Redis实现的分布式锁
|
4天前
|
缓存 监控 NoSQL
Redis设计与实现——分布式Redis
Redis Sentinel 和 Cluster 是 Redis 高可用与分布式架构的核心组件。Sentinel 提供主从故障检测与自动切换,通过主观/客观下线判断及 Raft 算法选举领导者完成故障转移,但存在数据一致性和复杂度问题。Cluster 支持数据分片和水平扩展,基于哈希槽分配数据,具备自动故障转移和节点发现机制,适合大规模高并发场景。复制机制包括全量同步和部分同步,通过复制积压缓冲区优化同步效率,但仍面临延迟和资源消耗挑战。两者各有优劣,需根据业务需求选择合适方案。

热门文章

最新文章

OSZAR »