最后更新:2021-10-29 23:55:59 手机定位技术交流文章
许多人认为rpc是一个网络协议,这是错误的。 我认为,rpc协议应该被描述为通信协议风格,这类似于“网络协议 ” ( http ), 而不是“网络协议 ” ( http ) 。
Rpc 协议要求查询时要求的样式与查询时相同,而结果则是加插和修改,删除是删除,搜索是取出,如下图所示。
阿里巴巴的开放源码高性能服务框架使应用程序能够实现高性能RPC产出和服务投入功能,这些功能可能不遗余力地与 " 春季框架 " 相结合。
随着项目业务变得更加复杂,职能不可避免地被拖入模块,随着规模的扩大,服务之间的相互作用将增加,而一项请求可能需要若干服务之间的互动,届时,dubbo协议的好处将变得显而易见。
我们都知道,标准的 http 协议仍然是1.1, 也就是说,如果服务之间的每通电话 需要3次tcp握手来互相呼唤, 用户面前的情景是相当“慢”。
另一方面,dubbo协议是一项长链协议,减少了与之相关的握手数量,并且是NIO无症状转移,正如NIO的概念读者所说:
NIO和常规 IO之间的第一个主要区别是, IO 以流动为导向,而 NIO 则以缓冲为导向。 Java IO 流意味着,每次从流中读取一个或一个以上的字节,直到读取所有字节,它们都不存在。 此外,它不能将数据从流到流。如果有必要将数据从流到流,它需要从流到流到流,它需要缓冲地带缓冲。 NIO 有一种略微不同的缓冲导向方法。 数据被读入缓冲地带, 缓冲地带以后会处理, 必要时可以移动到缓冲区周围和周围。 这增加了处理过程的灵活性。 但是, 还需要检查缓冲地带是否包含您需要处理的所有数据。 此外, 还需要确保, 当更多的数据被读进缓冲带时, 它不包括缓冲区内尚未处理过的数据 。
更多信息可在以下条款中找到:
添加链接描述
Bubbo服务的 " 春靴 " 整合保证消费者可以在zk发现服务,并根据dubbo协议完成呼叫。
但是,在下面的例子中,服务提供者对城市信息进行搜索,客户通过服务获得城市信息。
package org.spring.springboot.domain;
import java.io.Serializable;
* 城市实体分类 * * 城市实体分类 * * * 城市实体分类 * *
public class City implements Serializable {
private static final longserialVersionUID= -1L;
* 邮政编码 */
private Long id;
** 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 * 省号 *
private Long provinceId;
* 城市名称 *
private String cityName;
* 详细说明 *
private String description;
public City() {
}
public City(Long id, Long provinceId, String cityName, String description) {
this.id = id;
this.provinceId = provinceId;
this.cityName = cityName;
this.description = description;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getProvinceId() {
return provinceId;
}
public void setProvinceId(Long provinceId) {
this.provinceId = provinceId;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
package org.spring.springboot.dubbo;
import org.spring.springboot.domain.City;
* Dubbo城市业务服务水平* * * /
public interface CityDubboService {
* 使用城市名称查询城市信息 * @param cityName */
City findCityByName(String cityName);
}
package org.spring.springboot.dubbo.impl;
import com.alibaba.dubbo.config.annotation.Service;
import org.spring.springboot.domain.City;
import org.spring.springboot.dubbo.CityDubboService;
import org.springframework.beans.factory.annotation.Autowired;
* Dubbo城市业务服务一级实现层 * * /
以Dubbo服务公司的名义签名
@Service(version = "1.0.0")
public class CityDubboServiceImpl implements CityDubboService {
@Override
public City findCityByName(String cityName) {
return new City(1L,2L,"福建福州","有福之州");
}
}
package org.spring.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
* 春季启动应用程序初始化类别 * * * /
春季启动应用程序识别
@SpringBootApplication
public class ServerApplication {
public static void main(String[] args) {
// 程序启动入口
发射嵌入式托姆卡特和启动春季环境及其组成部分。
SpringApplication.run(ServerApplication.class,args);
}
}
## Dubbo 服务提供商配置 # # 使用名称 Spring.dubbo.application.name=# 春季登记中心地址.dubbo.registry.address=zookeeper://127.0.0.1:2181
春天是协议名称。.dubbo.protocol.name=《春天杜博港议定书》.dubbo.protocol.port=20880
# 春季成套服务目录.dubbo.scan=org.spring.springboot.dubbo
[zk: localhost:2181(CONNECTED) 2]ls/dubbo/org.spring.springboot.dubbo.CityDubboService/providers
[dubbo%3A%2F%2F192.168.2.1%3A20880%2Forg.spring.springboot.dubbo.CityDubboService%3Fanyhost%3Dtrue%26application%3Dprovider%26dubbo%3D2.5.3%26interface%3Dorg.spring.springboot.dubbo.CityDubboService%26methods%3DfindCityByName%26pid%3D17044%26revision%3D1.0.0%26side%3Dprovider%26timestamp%3D1635264068561%26version%3D1.0.0]
package org.spring.springboot.dubbo;
import com.alibaba.dubbo.config.annotation.Reference;
import org.spring.springboot.domain.City;
import org.springframework.stereotype.Component;
* 城市的消费者服务* * 城市的消费者服务* *
@Component
public class CityDubboConsumerService {
@Reference(version = "1.0.0")
CityDubboService cityDubboService;
public void printCity() {
String cityName="温岭";
Citycity= cityDubboService.findCityByName(cityName);
System.out.println(city.toString());
}
}
如下图所示,消费者将使用zk找到服务,然后打电话给提供商完成请求。
从上述情况中,我们可以看到zk+dubbo的强度:通过zk监测后续行动也可以通过集群确保zk的强度,以及提供者和客户之间脱钩,从而推动后续服务的扩散,只需将服务登记到zk即可。
https://github.com/JeffLi1993/springboot-learning-example
请记住,你只应专注于下列两个春季靴子项目:
springboot-dubbo-client
springboot-dubbo-server
在执行专门课程时,可参考该课程。
Dubbo/动物园维护者春季运动整合
Dubbo/动物园维护者春季运动整合
Dubbo协议介绍
熟知杜博和动物园守护者
本文由 在线网速测试 整理编辑,转载请注明出处。