dubbo和zookeeper

什么是SOA架构

soa是分布式架构,主要用于大型项目,它将传统项目的一个个模块变为一个个项目,这样的好处是降低模块间的耦合度,利于项目的扩展和维护。

SOA架构的作用

传统行业项目: 并发低, 数据量小, 不需要高可用, 例如: oa, erp, crm项目, 或者政府项目, 银行项目等(针对特定人群,则同一时间请求少).

互联网项目: 高并发, 大数据量, 高可用 例如: 京东, 百度, 淘宝, 天猫, 饿了么, 美团, 滴滴, ofo, 钉钉(针对所有人,同一时间请求并发高,高可用不可断线)

单台Tomcat极限基本是可以同时抗住500个并发,所以互联网项目不是一两个tomcat就可以解决的;但是如果将互联网大型项目做成一个项目,再每个tomcat都部署同样的内容也不够灵活。所以就需要专门做大型项目的架构。

在这里插入图片描述

SOA中将模块项目化,例如将controller和service拆成两个项目,但是spring中并不支持跨项目(跨tomcat)注入,所以需要dubbo和zookeeper

dubbo框架

rpc远程过程调用协议:
是JDK底层提出的协议, dubbo只是对这个协议的实现的一个框架技术.
rpc协议就是跨服务器, 跨tomcat, 从一个项目, 调用另一个项目中的方法.

什么是dubbo:
dubbo是阿里巴巴公司生产的一个rpc实现框架
dubbox是当当网维护的dubbo代码的版本.

dubbo作用:
跨项目调用方法, 例如从A项目中的controller调用B项目中的service方法

dubbo同类型的技术都有哪些:
rpc协议实现框架: dubbo, dubbox, springCloud
优点: 传输效率快, 缺点: controller和service两个项目必须都是Java语言实现

webService技术: 代表框架有cxf
底层使用的协议叫做soap协议, 其实传输的就是xml数据
优点: 可以跨语言跨平台, controller可以是Java语言实现, service可以是.net或者C语言等语言实现
缺点: 传输效率低

dubbo怎么用:

  1. service实现类上写@Service注解, 注意这个@service注解不是spring包的是阿里的dubbo包下的
  2. controller注入的时候使用@Refrence注解来进行注入, 也是阿里dubbo包下面的.
  3. 如果controller和service之间传输pojo实体类, 那么实体类必须实现Java的序列化接口.

Controller项目

/**
 * @RestController注解作用: 相当于在类上加上@controller注解, 并且在这个类的所有方法上都加上@ResponseBody注解
 */
@RestController
@RequestMapping("/test")
public class TestController {

	//Controller项目也需要放一份Service的接口jar包,不然无法调用
    @Reference
    private TestService testService;

    @RequestMapping("/getName")
    public String getName() {
        String name = testService.getName();
        return name;
    }
}

Service项目

@Service
public class TestServiceImpl implements TestService {

    @Override
    public String getName() {
        return "zhangsan";
    }
}

Zookeeper 注册中心

注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。

zookeeper管理dubbo调用流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值