互联网项目的一些概念
- 性能指标
- 响应时间(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)
-