随笔分类 - 微服务
摘要:系统规则功能只对linux系统有效,在此不做演示(未学) 集群流控功能目前还是beta阶段,不建议在实际生产环境中使用(未学) 1. 授权规则 授权规则可以对请求方来源做判断和控制。 1.1 基本规则 授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。 白名单:来源(origin)在白名单
阅读全文
摘要:1. 线程隔离&熔断降级【原理回顾】 限流是一种预防措施,虽然限流可以尽量避免因高并发而引起的服务故障,但服务还会因为其它原因而故障。 而要将这些故障控制在一定范围,避免雪崩,就要靠线程隔离(舱壁模式)和熔断降级手段了。 线程隔离:调用者在调用服务提供者时,给每个调用的请求分配独立线程池,出现故障时
阅读全文
摘要:准备工作 进入nacos的bin目录下startup.cmd -m standalone启动nacos 进入sentinel的jar包目录下java -jar sentinel-dashboard-1.8.1.jar启动sentinel 进入jmeter的bin目录下双击jmeter.bat启动测试
阅读全文
摘要:雪崩问题虽然有四种方案,但是限流是避免服务因突发的流量而发生故障,是对微服务雪崩问题的预防。我们先学习这种模式。 1. 簇点链路 当请求进入微服务时,首先会访问DispatcherServlet,然后进入Controller、Service、Mapper,这样的一个调用链就叫做簇点链路。簇点链路中被
阅读全文
摘要:HM-SpringCloud微服务系列8:微服务保护-高级篇 1. 雪崩问题及解决方案 1.1 雪崩问题 微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。 如果服务提供者I发生了故障,当前的应用的部分业务因为依赖于服务I,因此也会被阻塞。此时,其它不依赖于服务I的业务似乎不受影
阅读全文
摘要:1 集群结构介绍 单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。 ES集群相关概念: 集群(cluster):一组拥有共同的 cluster name 的 节点。 节点(node) :集群中的一个 Elasticearch 实例 分片(shard):索
阅读全文
摘要:1 数据同步问题 elasticsearch中的酒店数据来自于mysql数据库,因此mysql数据发生改变时,elasticsearch也必须跟着改变,这个就是elasticsearch与mysql之间的数据同步。 2 数据同步解决方案 常见的数据同步方案有三种: 同步调用 异步通知 监听binlo
阅读全文
摘要:自动补全需求说明 当用户在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,如图: 这种根据用户输入的字母,提示完整词条的功能,就是自动补全了。 因为需要根据拼音字母来推断,因此要用到拼音分词功能 1 拼音分词器 1.1 拼音分词器介绍 要实现根据字母做补全,就必须对文档按照拼音分词。在GitH
阅读全文
摘要:聚合(aggregations):实现对文档数据的统计、分析、运算。例如: 什么品牌的手机最受欢迎? 这些手机的平均价格、最高价格、最低价格? 这些手机每月的销售情况如何? 实现这些统计功能的比数据库的sql要方便的多,而且查询速度非常快,可以实现近实时搜索效果。 1 聚合的种类 聚合常见的有三类:
阅读全文
摘要:1 酒店搜索和分页 1.1 课件 1.2 需求分析 在项目的首页,有一个大大的搜索框,还有分页按钮 点击搜索按钮,可以看到浏览器控制台发出了请求: 请求参数如下: 由此可以知道,我们这个请求的信息如下: 请求方式:POST 请求路径:/hotel/list 请求参数:JSON对象,包含4个字段: k
阅读全文
摘要:1 快速入门(以match_all查询为例) 1.1 发起查询请求 代码解读: 第一步,创建SearchRequest对象,指定索引库名 第二步,利用request.source()构建DSL,DSL中可以包含查询、分页、排序、高亮等 query():代表查询条件,利用QueryBuilders.m
阅读全文
摘要:1 排序 搜索的结果可以按照用户指定的方式去处理或展示。 elasticsearch默认是根据相关度算分(_score)来排序,但是也支持自定义方式对搜索结果排序。可以排序字段类型有:keyword类型、数值类型、地理坐标类型、日期类型等。 1.1 普通字段排序 keyword、数值、日期类型排序的
阅读全文
摘要:1 DSL查询分类 1.1 DSL Query的分类 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词
阅读全文
摘要:为了与索引库操作分离,我们再次参加一个测试类,做两件事情: 初始化RestHighLevelClient 我们的酒店数据在数据库,需要利用IHotelService去查询,所以注入这个接口 package cn.itcast.hotel; import cn.itcast.hotel.pojo.Ho
阅读全文
摘要:1 什么是RestClient ES官方提供了各种不同语言的客户端,用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES。官方文档地址:https://www.elastic.co/guide/en/elasticsearch/client/index.html 其中的Jav
阅读全文
摘要:1 新增文档 # 插入文档 POST /heima/_doc/1 { "info": "黑马程序员Java讲师", "email": "zy@itcast.com", "name": { "firstName": "云", "lastName": "赵" } } 2 查询文档 3 删除文档 4 修改
阅读全文
摘要:索引库就类似数据库表,mapping映射就类似表的结构。 我们要向es中存储数据,必须先创建“库”和“表”。 1 mapping映射属性 mapping是对索引库中文档的约束,常见的mapping属性包括: type:字段数据类型,常见的简单类型有: 字符串:text(可分词的文本)、keyword
阅读全文
摘要:1 了解ES 1.1 ES作用 elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容。例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索java异常问题 在打车软件搜索附近的车 1.2 ELK技术栈 elasticsear
阅读全文
摘要:1 引言 Spring会把你发送的消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象。 只不过,默认情况下Spring采用的序列化方式是JDK序列化。众所周知,JDK序列化存在下列问题: 数据体积过大 有安全漏洞 可读性差 2 案例:测试默认转换器 @Bean public
阅读全文
摘要:1 发布/订阅模型简介 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,也就是要发送消息的程序,但是不再发送到队列中,而是exchange交换机 Exchange:交换机。一方面,接收生产者发送的消息。另一方面,知道如何处理消息,例如递交给某个特
阅读全文