dubbo与互联网项目

互联网项目的一些概念

  • 性能指标
    • 响应时间(RT):请求到拿到响应结果的时间
    • 并发查询次数(QPS):每秒处理的请求次数
    • 吞吐量(TPS): 每秒处理的事务请求次数
  • 架构目标
    • 高性能
    • 高可用
    • 高扩展
    • 安全性
    • 敏捷性
    • 可伸缩性

集群和分布式

  • 定义
    • 集群:一个业务模块,部署在多个服务器上,那么次业务就被称为集群
    • 分布式:一个完整的业务,拆分成多个模块,分布不是到多个集群上去
  • 作用:
    • 高可用
    • 高性能
    • 高伸缩
    • 高扩展性

架构的演进

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-whUQmyla-1596085298721)(%E7%AC%94%E8%AE%B0.assets/image-20200729113001512.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K0RzMzr4-1596085298724)(%E7%AC%94%E8%AE%B0.assets/image-20200729113016521.png)]

什么是Dubbo

  • 定义:一个高性能、轻量级的Java RPC框架

  • 场景:微服务项目的开发

  • 原理:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PgIhdize-1596085298727)(%E7%AC%94%E8%AE%B0.assets/image-20200729114351064.png)]

Dubbo的入门【精通】

  • 导包

    • zookeeper
    • nacos
    	<!--Dubbo的起步依赖,版本2.7之后统一为rg.apache.dubb -->
            <dependency>
                <groupId>org.apache.dubbo</groupId>
                <artifactId>dubbo</artifactId>
                <version>${dubbo.version}</version>
            </dependency>
            <!--ZooKeeper客户端实现 -->
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-framework</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
            <!--ZooKeeper客户端实现 -->
            <dependency>
                <groupId>org.apache.curator</groupId>
                <artifactId>curator-recipes</artifactId>
                <version>${zookeeper.version}</version>
            </dependency>
    
  • 配置

    <!--1.配置项目的名称,唯一-->
    <dubbo:application name="dubbo-service"/>
    <!--2.配置注册中心的地址-->
    <dubbo:registry address="zookeeper://192.168.149.135:2181"/>
    <!--3.配置dubbo包扫描-->
    <dubbo:annotation package="com.itheima.service.impl" />
    
  • 服务端代码

    import org.apache.dubbo.config.annotation.Service;
    
    @Service//将这个类提供的方法(服务)对外发布。将访问的地址 ip,端口,路径注册到注册中心中
    public class UserServiceImpl implements UserService {
    
        public String sayHello(User user) {
            return "hello dubbo hello!~";
        }
    }
    
  • 客户端代码

    @Reference//远程注入
    private UserService userService;
    
    @RequestMapping("/sayHello")
    public String sayHello(){
        return userService.sayHello();
    }
    

dubbo-admin的安装

  • 1、安装nodejs

  • 2、设置nodejs的国内镜像

    # 安装nrm
    npm -g install nrm
    nrm ls
    nrm use taobao
    
  • 3、修改zk地址或端口

    # dubbo-admin-server\src\main\resources\*.properties
    # 修改服务启动的端口
    server.port=8081
    admin.registry.address=zookeeper://localhost:2181
    admin.config-center=zookeeper://localhost:2181
    admin.metadata-report.address=zookeeper://localhost:2181
    
  • 4、打包maven项目

    mvn clean package -D skipTest
    
  • 5、运行项目(必须先运行ZK)

    # dubbo-admin-server\target
    java -jar dubbo-admin-server-0.1.jar
    

Dubbo高级特性

  • 序列化+协议:

    • 作用:便于对象在网络中进行传输
    • 常见的:
      • JSON
      • Serializable
  • 缓存:把注册中心所有提供的服务地址,缓存在消费者本地

    • 提供访问效率
    • 高可用
  • 超时:

    • 目的:降低雪崩发生的概率

    • 谁配置超时?消费端来配置实际的业务超时容忍度,提供端配置服务所能提供的最大延迟服务时间

    • 用法:

      @Service(timeout=1000,retries=2)
      @Reference(timeout=1000,retries=2)
      
  • 重试:

    • 目的:增加网络抖动情况下,服务被访问成功的概率

    • 谁配置超时?消费端

    • 用法:

      @Service(timeout=1000,retries=2)
      @Reference(timeout=1000,retries=2)
      

etries=2)
```

  • 重试:

    • 目的:增加网络抖动情况下,服务被访问成功的概率

    • 谁配置超时?消费端

    • 用法:

      @Service(timeout=1000,retries=2)
      @Reference(timeout=1000,retries=2)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值