rocket mq
问题引入上一节介绍了kafka是一个消息队列,但是如果我想某个消息过了半小时之后再次进行消费,这就是延时消息,这个使用需要rocket mq
与kafka对比都是消息队列,那么就可以进行对比
kafka是使用zookeper来进行,rocket mq使用的nameserver
分区被修改程队列
使用的mysql回表查询方式,首先找到offset,然后去commitlog找到body
kafka直接查询offset就可以使用
rocketmq在单个broker下降所有的topic的数据写入到一个broker里面,然后直接查询这个commit loig
备份机制,备份的是commitlog ,不再是分区
独有的功能消息过滤vip用户的消息还有普通用户的消息,可以打入tag来作为标记来进行区分
延时队列延时查询,是否缴费
死信队列消息重试次数太多,放入死信队列
实现分布式事务
kafka
为什么需要kafkakafka也是一种消息队列。
问题引入
当a服务每次产生200个消息,但是b服务每秒只能处理100个消息,消息处理不过来,就加入一个中间层,那就是kafka
消息队列介绍消息队列名称里面包含队列两个字,那他就是一种队列数据结构
高性能为了能让更多的消费者嫩能够消费消息队列,可以吧一个kafka被多个生产者还有消费者来进行使用
但是会引出一个问题
多个生产者还有消费者抢夺一个消息队列
这里可以使用topic来进行表示生产者还有消费者是哪一个主题,选择特定的消息队列来消费
但是一个消息队列的topic还是太多也容易出现争抢问题,这样我们可以对消息队列进行分区,每一个消费者值属于特定的分区(jdk1.7的hashmap思想)
高扩展性扩展就是进行加机器的意思
当分区过多在一个机器上,内存可能会爆炸
因此可以将分区分散部署到不同的机器上面(分布式),分区的荷载一起交一个broker
高可用性问题:当这个机器的broker全部挂掉,那不就是没有机器可以使用了吗?
多加几个副本,分散到不同的broker上面,使用选举策略来进行选举
持久化如果所有的机器 ...
k8s
问题引出当你部署的博客访问量太大,结果挂了,需要重启,内存大于多少g才可以,这个时候又是自己手动来进行部署,肥肠的耗时间。
介绍k8s通过yaml,来进行自动重启,自动扩容
架构原理也是控制节点还有工作节点组成
控制节点api server:手动实现的api来进行操作
scheduler:查看哪一个工作node足够,然后才能部署
controller :进行创建,关闭服务
etcd:来保存一些数据
pod多个container组成一个pod
pod运行在node,
k8s可以将pod移动到其他node上面
kublet这个是接受上面controller的命令的
langchain使用
问题引入
现有llm只能对话,无法进行操作,查询相关data
如果要换一个llm,那就需要重新更新llm的代码
不能实现根据不同任务选择不同的llm
无法有记忆,不能查到最新的消息
langchain介绍
解耦合了,变成prompt,model,chain,agent,vector等多个模块
LangChain 提供了对向量数据库的支持,能够把超长的 txt、pdf 等通过大模型转换为 embedding 的形式,存到向量数据库中,然后利用数据库进行检索。这样就可以支持更多长度的输入,解放了 LLM 的优势。
基本模块介绍最简单的运行模板
1234567891011DASHSCOPE_API_KEY=""from langchain_community.llms import Tongyifrom langchain.chains import LLMChainfrom langchain.prompts import PromptTemplatellm=Tongyi(temperature=1,dashscope_api_key=DASHSCOPE_API ...
日本旅游
日本出游1.事前准备1.1 证件办理护照办理
前往当地出入境进行办理,已经有护照的需要保证自己的护照是有半年的有效期。
签证办理
由于日本和我国并不是免签国家,因此需要进行办理签证。这里我选择的是大学生简化的电子签证,只需要提交学信网学籍信息还有身份证和户口本,护照信息就可以进行办理,由于日本不接受个人送签,因此需要旅行社进行代办(注意选择好自己的领区,我的是上海领区选择的是飞猪的新好游,一般是7-8个工作日出签)。如果是毕业三年之内的本科生以上学历也可以使用学生签证。其他的则需要提供银行流水。
1.2日元准备
这里插入银行卡
日元现金
我这里是使用的兴业银行进行外汇取现的,主要是兴业的汇率比较好,而且周围只有这个银行可以进行外汇储蓄,直接在手机银行搜索外汇取现预约,就可以进行线下兑汇。兑汇的前提是需要有日元外汇准备,因此需要啊购汇,收集银行搜索结汇购汇就可以进行购汇,我这次值取现1w的现金还是不太够,因此还准备了银行卡进行取现。
银行卡
这次只使用了3张卡,一个是兴业银行的寰宇人生借记卡,广发的美国运通借记卡还有一个是汇丰的蓝狮子mastercard。
第一个卡是在日本直接进行 ...
7.聊天室设计
目的设计qq聊天,discord
场景需要
发送消息
注册登录
通讯录
其他功能
限制登录状态
用户在线状态
qps计算微信越活10亿,每日发送450B
qps最大是520k
一条记录是30bytes,那就是1.3T一天
服务
信息存放
实时推送消息(fcm)
存储
出现无法进行群聊存放,而且查询where太多了
这边是使用一个thread作为一个会话,thread就相当于你与每一个人的会话
只需要查询,thread——id就可以确定会话,然后会话id联系一条msg
添加未读取的消息数量这样就需要查分thread表格
个人设置这个会话的属性+为读取数量
问题如何查询threadid
12SELECT thread_id FROM threads WHERE user_ids = SORT(ARRAY[user_id_A, user_id_B]) AND thread_type = 'private'
直接进行排序后,然后查询uid就可以得到,使用haxi加快
存储使用sql来存放
推送
自救就是poll或者pull
web接受消息
打开一 ...
6.文档协同系统
目的设计多人同时在线编辑文档,如腾讯文档
场景需求协同编辑编辑的主要功能
new
edit
保存
加入协同
协同
可以展示谁在编辑
内容锁定
:::color2使用websocket可以进行主动和被动更新,支持双向通信
:::
url设计使用短连接,而且连接不能包含文件路径信息
文件存放参考gfs的设计方式,metadata存放到db,内容信息在文件系统
修改方式是以行来作为修改的,使用双向链表进行构建数据结构,然后来执行
具体的修改逻辑,客户端告诉服务端是在哪一个的方向进行操作,然后处理之后,同步传给其他客户端
编辑操作为了避免多次进行调用,可以存放到redis,然后定时任务,这样可以一次性的写一批数据
显示多个人的图像多个人的信息是实时变化的
正在编辑的,写入redis
5.分布式系统
场景需求
写入文件,读取文件
支持多大的文件
多态机器存储文件
服务客户端与服务端
服务端如何进行沟通,
构建一个master节点,进行接受请求
点对点
master-slaver
storage存放文件
多次访问原信息
原信息
内容信息
通过原信息找到内容信息
存放1tb的,那就是借鉴二级分页的方式来处理,index,存放的是chunk
存放到多个服务器,
使用index放多个server的offset
如何写入一个文件拆分为chunk,然后进行传输
与master进行沟通
master分配chunk server
之后开始写入
返回写入成果
修改的话,参考redis,直接删除
如何读取参考上面的思路,还是需要master得到list列表
如何避免数据丢失使用replicate
如何发现chunke服务器寄了使用心跳机制
常用代码总结
基础入门暂时无法在飞书文档外展示此内容
镜像使用
clash使用
使用hf-mirror进行下载数据集
https://hf-mirror.com/
1HF_ENDPOINT=https://hf-mirror.com python your_script.py
Pipeline介绍常见的使用方法
加载pipeline
设置类型,设置model,设置分词器,设置device
进行推理输出
1234from transformers import pipelinemodel.config.id2label = id2_labelpipe = pipeline("text-classification", model=model, tokenizer=tokenizer, device=0)sen = "我觉得不错!"pipe(sen)
Tokenizerhttps://transformers.run/c2/2021-12-11-transformers-note-2/
参考这个,主要是进行介绍分词器的操作
主要的是attention ...
4.优惠券设计系统
分析还是4s,首先是场景
场景需求
发送优惠券
领取优惠券
使用优惠券
商家侧
新增优惠券
发送优惠券
用户侧
领取优惠券
下单
使用优惠券
支付
qps计算按照点击次数,还有多少人,多少个优惠券
服务传统的电商服务
订单服务
支付服务
+优惠券服务
存在的问题
分布式事务
超发送优惠券
防止重复领取
大批量发送优惠券(发红包类似)
storage设计scheme
优惠券(包含多少张,什么规则,已经发送的,已经使用的)
规则表(什么规则)
用户领取表(用户id,还有券id,券的状态)
触达系统就是推送系统,推送发圈的消息
消息(发送内容,from,to)
优化消息表,使用外键
大批量发券使用消息队列进行解耦
出现重复消费的问题
使用事务来进行操作
更新优惠券还有领券信息
使用》0来进行更新的
重复领券使用redis,sadd
1
语法是sadd key member
key是券的id,member是uid
直接查询
校验优惠券下单的时候校验
校验内容
国企
是否符合一则
是否互斥
现在设计到多个系统,需要使用分布式事务,tcc来进行解决
加入 ...