摘要:
这个需求为控制智能家居工作,把控制智能家居的操作指令发到队列中,比如:扫地机、洗衣机到指定时间工作 一.什么是延迟队列? 延迟队列存储的对象是对应的延迟消息,所谓“延迟消息” 是指当消息被发送以后,并不想让消费者立刻拿到消息,而是等待特定时间后,消费者才能拿到这个消息进行消费。 二.如何设置延迟队列 阅读全文
摘要:
这篇博客描述的是运行环境是.Net 7下使用WebApi,ORM框架使用EF Core的DbFirst模式,再配合上SqlServer的1主,2从3个数据库,完成的读写分离封装。 一.先准备3个数据库,1主,2从我先准备了3个数据库,分别是:SchoolDB(作为主库,到时候只负责写)、School 阅读全文
摘要:
一.多线程下引起的超卖问题呈现1.1.我先初始化库存数量为1、订单数量为0 1.2.然后我开启3个线程去执行业务 业务为:判断如果说库存数量大于0,则库存减1,订单数量加1 结果为:库存为-2,订单数量为3 原因:如下图所示,这是因为分别有6个指令(3个库存减1指令,3个订单数量加1指令)在redi 阅读全文
摘要:
一.为什么kafka要做分区? 因为当一台机器有可能扛不住(类比:就像redis集群中的redis-cluster一样,一个master抗不住写,那么就多个master去抗写),把一个队列的单一master变成多个master,即一台机器扛不住qps,那么我就用多台机器扛qps,把一个队列的流量均匀 阅读全文
摘要:
一.产生的问题 在.NET环境下使用kafka,消费者长时间消费,会报“ Application maximum poll interval ”错误。 我们是当测试芯片的工厂长时间运行软件,消费者拉取到消息后去生成芯片的测试报告文件时,会偶发报“ Application maximum poll i 阅读全文
摘要:
一.什么是脑裂? 有了两个master,一个让你向左,一个让你向右,一个集群中出现多个主节点,使得集群处于异常状态。 二.脑裂的产生 2.1.正常的集群状态 两个网络只有1个master。 2.2.出现脑裂 当前集群中有6个节点,左边3个节点(在上海)和右边3个节点(在北京)不在同一个网络,如果两个 阅读全文
摘要:
一.参考中间件源码实现自定义AOP 场景:在真实执行逻辑学习这个方法包一层层(学习前吃点东西、上个厕所),模拟中间件,一层层穿过 思路:对象构造完,加1个动态代理,基于Castle、组装委托,来个AOP扩展,像一个俄罗斯套娃 二.AOP扩展方法-ContainerAOPExtensions.cs 2 阅读全文
摘要:
一.鉴权中心 1.1.Nuget引入IdentityServer4(3.1.3) 我开始引入的是IdentityServer4(4.1.4),但是访问:http://localhost:10010/connect/token总是报{ "error": "invalid_request"},最后我降低 阅读全文
摘要:
一.单进程多线程的锁-线程锁 锁住线程的锁叫线程锁,像C#中的lock,Monitor,让线程排队,同一时刻只能有一个线程进来,让线程同步排队。 二.多进程的锁-分布式锁 锁住进程的锁就叫分布式锁,是锁住进程的一种机制,让进程排队。 三.电商秒杀场景 3.1.单体架构 并发量不够,秒杀服务只能并发1 阅读全文
摘要:
一、为什么要有网关Gateway? 1、做服务的管理,屏蔽外界对服务的访问,保护服务。2、微服务那么多服务,而且每一个服务都是集群式的,调用方不想记住每一个服务的IP+端口号。3、像授权每一个微服务都要授权,那么加到网关就可以了。 二、网关是做什么的? 做请求转发,转发策略的(如:随机调度,均匀调度 阅读全文
摘要:
一.为什么有Consul? 在微服务架构中,每1个服务都是集群式的提供服务,订单服务在10台服务器上都有,那么用户的请求到达,获取哪台服务器的订单服务呢?如果10台中有的订单服务挂了怎么办?10台服务器扛不住了,水平扩展又新增加了1台服务器提供订单服务,怎么让用户请求知道有新的服务器提供订单服务了? 阅读全文
摘要:
数据库加锁是修改哪一条加锁,还是在页上加锁,还是在表上加锁,数据库来决定 如果你更改的是两条记录,就在两条记录上加锁,如果你更改的是很多条,这个时候数据库一看一条一条加锁太麻烦,给整个页加锁更省事,或者给整个表加锁更加省事 加锁的级别越大,数据库越省事,数据库越省事,并发性越差,修改一条记录如果给表 阅读全文
摘要:
一.在ViewModel层直接调用View弹出窗体 如下图所示,这样做就发生了在ViewModel层直接使用了View,两者产生了耦合,ViewModel里是不应该包含View的,这不是我们期望的。 二.封装窗口管理器解耦在ViewModel中调用View 2.1.封装窗口管理器 延迟了对象的创建, 阅读全文
摘要:
一.更新的丢失举例:同一时间我把名字改成张三,你把名字改成李四,你一提交把我的更新张三覆盖了。 造成原因:别人修改后的数据把我修改后的数据覆盖了。 二.脏读举例:老师觉的本次考试题难,给每个学生加上10分,你本来考了59分没有及格,你一查询读到69分,我及格了很高兴回家了,但是老师觉得算了还是不要加 阅读全文
摘要:
首先解释下为什么产线客户电脑c盘空间越来越小?是因为如下图所示,kafka数据文件所对应的两个索引文件xxxxxx.index(偏移量索引文件),xxxxxx.timeindex(时间戳索引文件)没有被删除掉引起的,因为产线上现在已经有1000多个topic,每1个topic这两个索引文件就占了20 阅读全文
摘要:
一.simple_pattern分词器 simple_pattern分词器是根据正则表达式进行分词的分词器 #创建映射并定义字段内容分词的正则表达式 #正则表达式表示,如果连续有3个数字在一起,则可以被当作一个单词 PUT myindex-simple_pattern { "settings": { 阅读全文
摘要:
一.simple分词器 simple分词器是对字母文本进行分词拆分,并将分词后的内容转换成小写格式 #对指定内容根据"simple"分词器进行分词 POST _analyze { "analyzer":"simple", "test":"Our usual study and experience 阅读全文
摘要:
我在腾讯云活动期间买了两台ECS,操作系统是Linux CentOS 7.0以上版本为啥买两台呢?其一:一台用来搭建私有镜像仓库其二:做Docker集群 一.在CentOS 7.0上安装 .NET SDK或 .NET 运行时 https://docs.microsoft.com/zh-cn/dotn 阅读全文
摘要:
一.RequestDelegate的定义从RequestDelegate定义可以看出,RequestDelegate是接收请求上下文HttpContext的一个委托,RequestDelegate既然是一个委托,委托就是一个方法,所以RequestDelegate就是个方法,是个接受请求上下文的方法 阅读全文
摘要:
一.未做消息队列缺陷:用户秒杀,请求到了上游服务秒杀服务,然后上游服务调用下游服务下订单,减去库存,更新余额。上游服务秒杀服务的并发量能力有10000,下游服务的并发量能力有1000,当真的客户端并发量是10000,上游服务秒杀服务能接收10000个请求,但是下游服务只能接收1000个请求,那么下游 阅读全文
摘要:
一、什么是消息队列?1、消息就是数据。2、队列有队尾和队头,队列有入队和出队,队列先进先出。3、生产者存数据入口4、消费者取数据入口 二、推模型--发布订阅模型--阻塞 主动把消息推给订阅者。数据实时要求高,用推。 三、拉模型--生产者消费者模型--非阻塞消费者自己去拉取数据。数据实时要求不高,用拉 阅读全文
摘要:
一、定制第三方依赖注入容器Autofac 1、nuget引入autofac和 Autofac.Extensions.DependencyInjection 2、注释掉原来的IServiceCollection,ConfigureServices需要返回值IServiceProvider 3、new 阅读全文