宁波学校网站建设,绿色科技网站建设,北京装饰公司名称,移动互联网开发课件文章目录 1、Dubbo的前世今生2、Dubbo的快速入门2.1、Dubbo的基本架构2.2、Nacos2.3、管理后台2.4、入门案例2.4.1、服务提供者搭建环境代码实现配置文件 2.4.2、服务消费者搭建环境代码实现配置文件 最后说一句 1、Dubbo的前世今生
2011年10月27日#xff0c;阿里巴巴开源了… 文章目录 1、Dubbo的前世今生2、Dubbo的快速入门2.1、Dubbo的基本架构2.2、Nacos2.3、管理后台2.4、入门案例2.4.1、服务提供者搭建环境代码实现配置文件 2.4.2、服务消费者搭建环境代码实现配置文件 最后说一句 1、Dubbo的前世今生
2011年10月27日阿里巴巴开源了自己的SOA服务化治理方案的核心框架Dubbo服务治理和SOA的设计理念开始逐渐在国内软件行业中落地并被广泛应用。 早期版本的dubbo遵循SOA的思想是面向服务架构的重要组件。 如今版本的Dubbo作为Spring Cloud的二进制通信方案来发挥Dubbo的性能优势
2、Dubbo的快速入门
2.1、Dubbo的基本架构 节点角色说明
节点角色说明Provider暴露服务的服务提供方。Consumer调用远程服务的服务消费方。Registry服务注册与发现的注册中心。Monitor统计服务的调用次数和调用时间的监控中心。
调用关系说明
服务容器负责启动加载运行服务提供者。服务提供者在启动时向注册中心注册自己提供的服务。服务消费者在启动时向注册中心订阅自己所需的服务。注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者。服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用。服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心。
2.2、Nacos
Nacos是阿里巴巴的产品是一个集服务发现配置管理的平台在国内受欢迎程度较高。 进入bin目录执行启动命令
#进入bin目录
cd bin
#启动
startup.cmd -m standalone2.3、管理后台
DubboAdmin是阿里巴巴管理提供的管理控制台可以实现服务查询详情展示,服务测试等功能。借由DubboAdmin可以更好的帮助开发人员对服务进行管理和监控
#1、下载代码:
git clone https://github.com/apache/dubbo-admin.git
#2、在 dubbo-admin-server/src/main/resources/application.properties中指定注册中心地址
#3、构建
mvn clean package -D maven.test.skiptrue
#4、启动
mvn --projects dubbo-admin-server spring-boot:run
#或者
cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar
#5、访问 http://localhost:8080
2.4、入门案例
需求使用Dubbo构建分布式架构完成根据用户id查询用户 2.4.1、服务提供者
搭建环境
1创建user-provider模块导入依赖
dependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!--mybatis--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependency!--dubbo的起步依赖--dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion2.7.8/version/dependencydependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-registry-nacos/artifactIdversion2.7.8/version/dependency
/dependencies2编写引导类
package cn.itcast.user;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;MapperScan(cn.itcast.user.mapper)
SpringBootApplication
public class UserProviderApplication {public static void main(String[] args) {SpringApplication.run(UserProviderApplication.class, args);}}代码实现
1UserServiceImpl
package cn.itcast.user.service;import cn.itcast.user.api.UserService;
import cn.itcast.user.domain.User;
import cn.itcast.user.mapper.UserMapper;
import org.apache.dubbo.config.annotation.DubboService;
import org.springframework.beans.factory.annotation.Autowired;DubboService
public class UserServiceImpl implements UserService {Autowiredprivate UserMapper userMapper;//根据id查询用户名称public String queryUsername(Long id) {return userMapper.findById(id).getUsername();}
}配置文件
server:port: 18081
spring:datasource:url: jdbc:mysql://localhost:3306/dubbo-demo?useSSLfalseusername: rootpassword: rootdriver-class-name: com.mysql.jdbc.Driverapplication:name: user-provider
logging:level:cn.itcast: debugpattern:dateformat: HH:mm:ss:SSS
dubbo:protocol:name: dubboport: 20881registry:address: nacos://127.0.0.1:8848scan:base-packages: cn.itcast.user.service2.4.2、服务消费者
搭建环境
1创建user-consumer模块导入依赖
dependenciesdependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency!--dubbo的起步依赖--dependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-spring-boot-starter/artifactIdversion2.7.8/version/dependencydependencygroupIdorg.apache.dubbo/groupIdartifactIddubbo-registry-nacos/artifactIdversion2.7.8/version/dependency
/dependencies2配置引导类
package cn.itcast.user;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class UserConsumerApplication {public static void main(String[] args) {SpringApplication.run(UserConsumerApplication.class, args);}
}代码实现
package cn.itcast.user.controller;import cn.itcast.user.api.UserService;
import cn.itcast.user.domain.User;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;Slf4j
RestController
RequestMapping(/user)
public class UserController {//引用远程服务DubboReferenceprivate UserService userService;GetMapping(/username/{id})public String queryUsername(PathVariable(id) Long id) {return userService.queryUsername(id);}
}配置文件
server:port: 18081
spring:application:name: user-consumer
logging:level:cn.itcast: debugpattern:dateformat: HH:mm:ss:SSS
dubbo:registry:address: nacos://127.0.0.1:8848最后说一句
感谢大家的阅读文章通过网络资源与自己的学习过程整理出来希望能帮助到大家。
才疏学浅难免会有纰漏如果你发现了错误的地方可以提出来我会对其加以修改。