您的位置:首页 > 业界新闻

dubbo与互联网项目

2020-07-30 13:02 1016 查看

互联网项目的一些概念

  • 性能指标 响应时间(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)
  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: 
    相关文章推荐