Java 分布式框架 —— Dubbo 快速入门

1 分布式系统中的相关概念

1.1 大型互联网项目架构目标

传统项目和互联网项目

传统项目:例如 OA、HR、CRM 等,服务对象为:企业员工

互联网项目:天猫、微信、百度等,服务对象为:全体网民

互联网项目特点:用户多;流量大、并发高;海量数据;易受攻击;功能繁琐;变更快

大型互联网项目架构目标:

  • 高性能:提高快速的访问体验
  • 高可用:网站服务一直可以正常访问
  • 可伸缩:通过硬件增加/减少,提高/降低处理能力
  • 高可拓展:系统间耦合低,方便的通过增加/移除方式,增加/减少新的功能/模块
  • 安全性:提供网站安全访问和数据加密,安全存储等策略
  • 敏捷性:随需应变,快速响应

1.2 集群和分布式

集群:一个业务模块,部署在多台服务器上(很多“人”一起,干一样的事)

分布式:一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上(很多“人”一起,干不一样的事。这些不一样的事合起来是一件大事)

【注】在一般项目中,集群和分布式是并存的 

1.3 架构演进(分布式)

单体架构

垂直架构 

分布式架构

 【注】分布式的每一部分都可以独立的启动

SOA架构

微服务架构 

【注】Dubbo 是 SOA 时代的产物, SpringCloud 是微服务时代产物

2 Dubbo 概述

2.1 Dubbo 概念

阿里巴巴开源的一个高性能、轻量级的Java RPC 框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案

官网:http://dubbo.apache.org

2.2 Dubbo 架构

3 Dubbo 快速入门

3.1 Zookeeper 安装

官网下载地址:https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/apache-zookeeper-3.6.4-bin.tar.gz

3.2 Dubbo 快速入门

 定义服务接口

public interface HelloService {
    String sayHello(String name);
}

实现服务接口

public class HelloServiceImpl implements HelloService {
    public String sayHello(String name) {
        return "Hello, " + name;
    }
}

 配置 Dubbo 服务提供者

<!-- dubbo-provider.xml -->
<dubbo:application name="hello-provider" />
<dubbo:registry address="zookeeper://localhost:2181" />
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:service interface="com.example.HelloService" ref="helloService" />
<bean id="helloService" class="com.example.HelloServiceImpl" />

 配置 Dubbo 服务消费者

<!-- dubbo-consumer.xml -->
<dubbo:application name="hello-consumer" />
<dubbo:registry address="zookeeper://localhost:2181" />
<dubbo:reference id="helloService" interface="com.example.HelloService" />

 编写服务消费者代码

public class HelloConsumer {
    public static void main(String[] args) {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-consumer.xml");
        HelloService helloService = (HelloService) context.getBean("helloService");
        String result = helloService.sayHello("Dubbo");
        System.out.println(result);
    }
}

 编写服务提供者代码

public class HelloProvider {
    public static void main(String[] args) throws IOException {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("dubbo-provider.xml");
        context.start();
        System.in.read();
    }
}

4 Dubbo 高级特性

4.1 dubbo-admin 管理平台

  • dubbo-admin 管理平台,是图形化的服务管理页面
  • 从注册中心中获取到所有的提供者/消费者进行配置管理
  • 路由规则、动态配置、服务降级、访问控制、权重调整、负载均衡等管理功能
  • dubbo-admin 是一个前后端分离的项目,前端使用 vue ,后端使用 springboot

4.2 dubbo 常用高级配置

1、序列化

【注】将来所有的 pojo 类都需要实现 Serializable 接口

2、地址缓存

注册中心挂了,服务是否可以正常访问?

可以,因为 Dubbo 服务消费则会在第一次调用时,会将服务提供方地址缓存到本地,以后在调用则不会访问注册中心,当服务器提供者地址发生变化时,注册中心会通知服务消费者

3、超时

4、重试

【网络抖动】网络突然断开又立马连接

【retries】重试两次,一共三次

5、多版本 

6、 负载均衡

7、集群容错

 8、服务降级

  • 20
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值