Dubbo(Day2)
Dubbo(Day2)消费端是如何找到服务端的?Dubbo 会在 Zookeeper 的 /dubbo/interfaceName 和 /services/appName 下写入服务提供者的连接信息。
zookeeper显示的数据:
1234[zk: localhost:2181(CONNECTED) 2] ls /services/first-dubbo-provider[30.221.146.35:20880][zk: localhost:2181(CONNECTED) 3] get /services/first-dubbo-provider/30.221.146.35:20880{"name":"first-dubbo-provider","id":"30.221.146.35:20880","address":"30.221.146.35","port":20880,"sslPort":null," ...
Dobbo(Day1)
Dobbo(Day1)分布式服务架构RPC 远程过程调用
缺点:需要一个调度中心来实时分配服务器 提高资源的利用率
流动计算架构 :动态调度中心:zookeeper nacos等等
RPC远程过程调用,一种进程间的通信方式,是一种技术思想
基本原理
RPC两大核心:通信 序列化
框架有 : Dubbo、gRPC、Thrift、HSE(阿里巴巴)
dobbo核心高性能、轻量级的开源java rpc框架,三大核心功能:面向接口的远程方法调用,智能容错和均衡负载、服务自动注册和发现
这里的Registry可以用zookeeper
Zookeeper注册中心使用docker拉取镜像
123456# 检索ZooKeeper 镜像docker search zookeeper# 拉取ZooKeeper镜像最新版本docker pull zookeeper:latest# 我使用的版本docker pull zookeeper:3.5.7
启动容器
12docker run -d --name zookeeper --privileged=true -p 2181:2181 -v / ...
编译原理
编译原理正则表达式
只运行使用字符、数字、下划线和连接符合
编译器(Compilers)与解释器(Interpreters)
编译器的重要功能就是将高级语言/程序转换为汇编代码
为啥会有这么多编程语言,为啥不能只选用一种,谁是好的语言?
重口难调 科学计算good fp good arrarys 并行处理,工程应用 另一个是商用 持久性 数据分析 好的数据报告
系统编程方面 非常底层的应用 控制这些资源的颗粒度 时间上的分配快速响应
为啥设计新语言? 时间成本等 我们需要更多的程序员快速掌握 一门语言越流行就越保守 同时也会产生新语言的诞生和兴起 例如php到java到golang c到c++ matlab到python
如果程序员发现通过一些金钱或者时间去选择一门新语言会让自己变的更有竞争力,他们会选择新的语言
编程语言会一直产生 只要有需求 例如java21才支持虚拟线程 golang自诞生起就支持 python作为新兴语言发 展非常迅猛
没有特别的衡量标准 用的人越多就是好的语言吗? 一门语言的流 ...
RabbitMQ(DAY2)
RabbitMQ(DAY2)数据隔离
对Virtual Hosts进行添加
使用java进行操作spring AMQP
导入依赖maven
1234<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency>
写publisherTests类
123456789101112@Autowired private RabbitTemplate rabbitTemplate; @Test public void testSimpleQueue(){ String queueName = "simple.queue"; String message = "hello , rabbitmq!"; ra ...
RabbitMQ(DAY1)
RabbitMQ(DAY1)什么是消息队列?可以理解为一个存放消息的容器,当我们需要使用消息的时候,直接从容器里面拿出消息使用即可。队列Queue特点是先进先出,所以消费消息时也是先进先出的。
其中参与传递的双方叫做生产者和消费者
这似乎很像操纵系统中的进程通讯,也是一种消息队列。我们这里提到的消息队列稍微有点区别,更多指的是各个服务以及系统内部的各个组件/模块之间的通信,属于一种中间件。
中间件就是一类为应用软件服务的软件,应用软件是为用户服务的,用户不用接触或者使用到中间件
除了消息队列,常见的中间件有RPC框架、分布式组件、HTTP服务器、任务调度框架、配置中心、数据库层的分库分表工具和数据迁移工具。
为啥要用消息队列?使用消息队列给我们带来三大好处:
异步处理
A调用B 只需要监听B处理完成的消息,当b处理完后,会发一条消息给mq,mq再转发给A
削峰/限流
降低系统的耦合性
部署推荐用docker 性能损失其实很小 不像redis登录到rabbitmq端口是:15672
MPP
MPplus无侵入式的mp
UserMapper继承BaseMapper 要指定实体类
常见注解MBplus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息
(约定大于配置)
不符合约定:
@TableName: 用来指定表名
@TableId(value , type ): 用来指定表中的关键字段信息
@TableField(“‘转义字符’” , exist = false (不是数据库字段)): 用来指定表中的普通字段信息
未指定id默认为雪花算法
常见配置
核心功能条件构造器mbps支持各种复杂的where条件,可以满足日常开发的所有需求
123456QueryWrapper<User> wrapper = new QueryWrapper<>() .select("id","username","info","balance") .like("username&quo ...