摘要:
.Net的ElasticSearch 有两个版本,Elasticsearch.Net(低级) 和 NEST(高级),推荐使用 NEST,低级版本的更灵活,水太深 把握不住。有个需要注意,使用的版本号必须要ElasticSearch服务端版本号一致。 一、 连接池 1.1 SingleNodeConn 阅读全文
摘要:
上篇文章主要说大概逻辑,这篇就文章用代码验证细节。 1、当交换机为Direct类型,当多个相同路由key和队列连接时,发送消息时,队列是否都会收到消息? 答案是肯定的。 发送端: using (IConnection con = conFactory.CreateConnection())//创建连 阅读全文
摘要:
一、安装配置 在官网下载Es,注意版本号,不同大版本号之间差异很大。我安装的是7.14.0版本 1.1 安装成服务 cmd 进入bin目录下执行 elasticsearch-service.bat install 1.2 安装插件 ik分词器,分词器的版本和ES版本需要一致 elasticsearc 阅读全文
摘要:
最近接手一个新项目,爬亚马逊分类、商品数据。记得大学的时候,自己瞎玩,写过一个爬有缘网数据的程序,那个时候没有考虑那么多,写的还是单线程,因为网站没有反爬,就不停的一直请求,记得放到实验室电脑上一天,跑了30w+的数据。然后当前晚上有缘网网站显示维护中。。。。 毕竟小打小闹,没有真正的写过爬虫。就翻 阅读全文
摘要:
一、Grpc概述 gRPC 基于如下思想:定义一个服务, 指定其可以被远程调用的方法及其参数和返回类型。gRPC 默认使用protocol buffers作为接口定义语言,来描述服务接口和有效载荷消息结构。如果有需要的话,可以使用其他替代方案。 定义的服务分为4中类型: 单项 RPC,即客户端发送一 阅读全文
摘要:
一、日志组件介绍 在之前单体项目的时候,经常使用的日志组件有NLog、Log4,还有.Net Core自带的日志组件Logging(之前写过),使用它们记录到文本文件中,但是当日志文件很大的时候,查询日志就变的很痛苦。Exceptionless是一个开源的日志组件,它将消息存储到ElasticSea 阅读全文
摘要:
一、对象池 运用对象池化技术可以显著地提升性能,尤其是当对象的初始化过程代价较大或者频率较高。下面是ObjectPool源码中涉及的几个类。当你看过.Net Core源码很多时,你会发现,微软的开发很多都是这种模式,通过Policy构建Provider,通过Provider创建最终的类。 二、使用 阅读全文
摘要:
一、配置简述 之前在.Net Framework平台开发时,一般配置文件都是xml格式的Web.config,而需要配置其他格式的文件就需要自己去读取内容,加载配置了。.而Net Core支持从命令行、环境变量、文件、内存、Key-per-file中加载配置,其中文件包括xml、ini、json三种 阅读全文
摘要:
一、依赖注入 引入依赖注入的目的是为了解耦和。说白了就是面向接口编程,通过调用接口的方法,而不直接实例化对象去调用。这样做的好处就是如果添加了另一个种实现类,不需要修改之前代码,只需要修改注入的地方将实现类替换。上面的说的通过接口调用方法,实际上还是需要去实例化接口的实现类,只不过不需要我们手动ne 阅读全文
摘要:
1、消息中间件 消息队列中间件是指利用高效可靠地消息传递机制传递消息。有两种传递模式:点对点模式、发布/订阅模式。流行的消息中间件有RabblitMQ、Kafka、RockerMQ。它们都提供了基于存储和转发的应用程序之间的异步数据发送,即应用程序彼此不直接通信,而是与作为中介的消息中间件通信。 2 阅读全文
摘要:
通过ZooKeeper的有序节点、节点路径不回重复、还有节点删除会触发Wathcer事件的这些特性,我们可以实现分布式锁。 一、思路 二、实现 在实现是要了解一个类 AutoResetEvent。AutoResetEvent 常常被用来在两个线程之间进行信号发送。它有两个重要的方法: Set() : 阅读全文
摘要:
上一篇文章简单介绍了ZooKeeper,讲了分布式中,每个微服务都会部署到多台服务器上,那服务之间的调用是怎么样的呢?如图: 1、集群A中的服务调用者如何发现集群B中的服务提供者呢? 2、集群A中的服务调用者如何选择集群B中的某一台服务提供者去调用呢? 3、集群B中某台机器下线,集群A怎么避免下次调 阅读全文
摘要:
一、服务注册中心介绍 分布式服务框架部署在多台不同的机器上。例如服务A是订单相关的处理服务,服务B是订单的客户的相关信息服务。此时有个需求需要在服务A中获取订单客户的信息。如下图: 此时就面临以下几个问题: 1、集群A中的服务调用者如何发现集群B中的服务提供者。 2、集群A中的服务调用者如何选择集群 阅读全文
摘要:
因为老项目用的Asp.Net Web API技术开发部署到Window系统上,而新项目用的是.Net Core部署到Ubuntu系统中,所以在管理切换上有些不便。于是决定将老项目的测试服部署到Ubuntu中,试试水。 一、简述 要实现Asp.Net项目部署到Linux中,必须要通过Mono。Mono 阅读全文
摘要:
项目中有时接口访问时间过长,但是通过浏览器F12查看时,接口访问时间很正常,所以就很奇怪,于是写一个中间件,记录所有接口访问时间的中间件。 一、中间件 中间件是应用程序处理管道中的组件,用来处理请求和响应。如下图,请求来之后,第一个中间件处理,处理完后调用下一个中间件(当然也可以选择不调用下一个中间 阅读全文