2 索引库操作
mapping映射属性索引库就类似数据库表,mapping映射就类似表的结构,要向es中存储数据,必须先创建“库”和“表”。
mapping是对索引库中文档的约束,常见的mapping属性包括:
type:字段数据类型,常见的简单类型有:
字符串:text(可分词的文本)、keyword(精确值,例如:品牌、国家、ip地址)
数值:long、integer、short、byte、double、float、
布尔:boolean
日期:date
对象:object
index:是否创建索引,默认为true
analyzer:使用哪种分词器
properties:该字段的子字段
example
123456789101112{ "age": 21, "weight": 52.1, "isMarried": false, "info": "黑马程序员Java讲师", "email": "zy@itcast.cn& ...
1 初识 Elasticsearch
ES
elasticsearch 的作用
elasticsearch是一款非常强大的开源搜索引擎,具备非常多强大功能,可以帮助我们从海量数据中快速找到需要的内容
在GitHub搜索代码
在电商网站搜索商品
在百度搜索答案
在打车软件搜索附近的车
ELK技术栈
elasticsearch结合kibana、Logstash、Beats,也就是elastic stack(ELK)。被广泛应用在日志数据分析、实时监控等领域:
而elasticsearch是elastic stack的核心,负责存储、搜索、分析数据。
elasticsearch和lucene
elasticsearch底层是基于lucene来实现的。
Lucene是一个Java语言的搜索引擎类库,是Apache公司的顶级项目,由DougCutting于1999年研发。官网地址:https://lucene.apache.org/ 。
elasticsearch的发展历史:
2004年Shay Banon基于Lucene开发了Compass
2010年Shay Banon 重写了Compass,取名为E ...
设计模式-22-责任链模式
责任链模式
责任链模式为请求创建了一个接收者对象的链。
这种模式给予请求的类型,对请求的发送者和接收者进行解耦。它属于行为型模式。
在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。
意图:
避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。
主要解决:
职责链上的处理者负责处理请求,客户只需要将请求发送到职责链上即可,无须关心请求的处理细节和请求的传递,所以职责链将请求的发送者和请求的处理者解耦了。
何时使用:
在处理消息的时候以过滤很多道。
如何解决:
拦截的类都实现统一接口。
关键代码:
Handler 里面聚合它自己,在 HandlerRequest 里判断是否合适,如果没达到条件则向下传递,向谁传递之前 set 进去。
优点:
降低耦合度。它将请求的发送者和接收者解耦
简化了对象。使得对象不需要知道链的结构
增强给对象指派职责的灵活性。通过改变链内的成员或者调动它们的次序,允许动态地新增或者删除责任。
增加新 ...
3 分布式事务处理 Seata
分布式事务存在问题
单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三个服务来完成。此时每个服务内部的数据一致性由本地事务保证,但是全局的数据一致性无法保证
用户购买商品的业务逻辑。整个业务逻辑由3个微服务提供支持:
仓储服务:对给定的商品扣除仓储数量。
订单服务:根据采购需求创建订单。
帐户服务:从用户帐户中扣除余额。
Seata简介Seata (Simple Extensible Autonomous Transaction Architecture,简单可扩展自治事务框架) 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。
典型的分布式事务过程
分布式事务处理过程的ID+三组件模型
ID
说明
Transaction ID XID
全局唯一的事务ID
术语
说明
TC (Transaction Coordinator) - 事务协调者
维护全局和分支事务的状态,驱动全局事务提交或回滚
TM (Transaction Man ...
2 服务熔断和限流 Sentinel
Sentinel特性
Sentinel分两个部分
核心库(Java客户端)不依赖任何框架/库,能够运行于所有Java运行时环境,同时对Dubbo/SpringCloud等框架也有较好的支持
控制台(Dashboard)基于SpringBoot开发,打包后可以直接运行,不需要额外的Tomcat等应用容器
Sentinel控制台安装步骤
下载地址
运行命令(前提Java8环境;8080端口)
1java -jar sentinel-dashboard-1.8.6.jar
访问sentinel管理界面(账号密码均为sentinel)
初始化监控启动Nacos http://localhost:8848/nacos
1.新建cloudalibaba-sentinel-service-8401
2.引入pom
3.配置yml
4.添加主启动
5.处理业务类
6.测试
启动8401,由于Sentinel采用懒加载
执行一次访问http://localhost:8401/testA和http://localhost:8401/testB
流控规则
资源名:唯一名称,默 ...
1 服务注册和配置中心 Nacos
Nacos简介
Nacos:Dynamic Naming and Configuration Service
一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos就是注册中心+配置中心的组合(Eureka+Config+Bus)
快速入门
安装运行成功后访问http://localhost:8848/nacos(默认账号密码为nacos)
Nacos作为服务注册中心服务提供者注册1.新建模块cloudalibaba-provider-payment-9001
2.引入pom
spring-cloud-starter-alibaba-nacos-discovery
spring-boot-starter-web
spring-boot-starter-actuator
spring-boot-starter-test
3.配置yml
12345678910111213141516server: port: 9001spring: application: name: nacos-payment-provider cloud: nacos: ...









