SpringBoot 1

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: SpringBoot 1

框架搭建


启动zookeeper !

IDEA创建一个空项目;

3.创建一个模块,实现服务提供者:provider-server , 选择web依赖即可

4.项目创建完毕,我们写一个服务,比如卖票的服务;

编写接口

package com.kuang.provider.service;
public interface TicketService {
public String getTicket();
}

编写实现类

package com.kuang.provider.service;
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return “《狂神说Java》”;
}
}

5.创建一个模块,实现服务消费者:consumer-server , 选择web依赖即可

6.项目创建完毕,我们写一个服务,比如用户的服务;

编写service

package com.kuang.consumer.service;
public class UserService {
//我们需要去拿去注册中心的服务
}

需求:现在我们的用户想使用买票的服务,这要怎么弄呢 ?


服务提供者

1、将服务提供者注册到注册中心,我们需要整合Dubbo和zookeeper,所以需要导包

我们从dubbo官网进入github,看下方的帮助文档,找到dubbo-springboot,找到依赖包


org.apache.dubbo dubbo-spring-boot-starter 2.7.3 zookeeper的包我们去maven仓库下载,zkclient; com.github.sgroschupf zkclient 0.1 【新版的坑】zookeeper及其依赖包,解决日志冲突,还需要剔除日志依赖; org.apache.curator curator-framework 2.12.0 org.apache.curator curator-recipes 2.12.0 org.apache.zookeeper zookeeper 3.4.14 org.slf4j slf4j-log4j12 2、在springboot配置文件中配置dubbo相关属性! #当前应用名字 dubbo.application.name=provider-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 #扫描指定包下服务 dubbo.scan.base-packages=com.kuang.provider.service 3、在service的实现类中配置服务注解,发布服务!注意导包问题 import org.apache.dubbo.config.annotation.Service; import org.springframework.stereotype.Component;
@Service //将服务发布出去
@Component //放在容器中
public class TicketServiceImpl implements TicketService {
@Override
public String getTicket() {
return “《狂神说Java》”;
}
}

逻辑理解 :应用启动起来,dubbo就会扫描指定的包下带有@component注解的服务,将它发布在指定的注册中心中!


服务消费者

1、导入依赖,和之前的依赖一样;

org.apache.dubbo dubbo-spring-boot-starter 2.7.3 com.github.sgroschupf zkclient 0.1 org.apache.curator curator-framework 2.12.0 org.apache.curator curator-recipes 2.12.0 org.apache.zookeeper zookeeper 3.4.14 org.slf4j slf4j-log4j12

2、配置参数 #当前应用名字 dubbo.application.name=consumer-server #注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 3. 本来正常步骤是需要将服务提供者的接口打包,然后用pom文件导入,我们这里使用简单的方式,直接将服务的接口拿过来,路径必须保证正确,即和服务提供者相同;

完善消费者的服务类

package com.kuang.consumer.service;
import com.kuang.provider.service.TicketService;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.stereotype.Service;
@Service //注入到容器中
public class UserService {
@Reference //远程引用指定的服务,他会按照全类名进行匹配,看谁给注册中心注册了这个全类名
TicketService ticketService;
public void bugTicket(){
String ticket = ticketService.getTicket();
System.out.println(“在注册中心买到”+ticket);
}
}

5. 测试类编写;

@RunWith(SpringRunner.class)
@SpringBootTest
public class ConsumerServerApplicationTests {
@Autowired
UserService userService;
@Test
public void contextLoads() {
userService.bugTicket();


}


}

启动测试


开启zookeeper

打开dubbo-admin实现监控【可以不用做】

开启服务者

消费者消费测试,结果:

监控中心 :


ok , 这就是SpingBoot + dubbo + zookeeper实现分布式开发的应用,其实就是一个服务拆分的思想;


相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
8月前
|
druid Java 数据库连接
89.【SpringBoot-02】(九)
89.【SpringBoot-02】
57 0
|
8月前
|
安全 Java 数据库
89.【SpringBoot-02】(四)
89.【SpringBoot-02】
44 0
|
8月前
|
存储 缓存 安全
89.【SpringBoot-02】(六)
89.【SpringBoot-02】
38 0
|
4月前
|
JSON Java 数据安全/隐私保护
Springboot 之 HandlerMethodReturnValueHandler 运用
Springboot 之 HandlerMethodReturnValueHandler 运用
41 0
|
8月前
|
Java 数据格式 微服务
springboot系列知识
Spring Boot都很熟悉了,再重新认识学习一遍。
57 0
|
8月前
|
监控 druid Java
89.【SpringBoot-02】(二)
89.【SpringBoot-02】
37 0
|
8月前
|
负载均衡 Java 应用服务中间件
87.【SpringBoot-01】(一)
87.【SpringBoot-01】
57 0
|
8月前
|
JSON JavaScript Java
87.【SpringBoot-01】(七)
87.【SpringBoot-01】
35 0
|
8月前
87.【SpringBoot-01】(三)
87.【SpringBoot-01】
32 0
|
8月前
|
XML Java 数据格式
87.【SpringBoot-01】(五)
87.【SpringBoot-01】
46 0