
异步执行相对于同步执行,可以大大提高cpu的利用率,减少cpu的空置时间,提高服务的吞吐量,但是并不能减少单次请求的执行耗时。
spring的webflux使用netty作为容器,其中的api都是异步或者非阻塞式的,而且他也完全支持stream流和函数式编程的特性。
flux和mono是reactor(响应式编程库)的两个基本概念。
flux表示包含0到N个元素的异步序列,是一个数据的发布者(publisher)
mono表示的是包含0或者1个元素的异步序列,也是一个数据的发布者。
这边将es和mono一起封装了一个starter的工具包。
工具包下载
在yml中配置elasticsearch.hosts的地址 com.elasticsearch esTest1.0-SNAPSHOT
构造一个实体类
@Data
@Indices("goods") //设置索引
pubic class goods{
@IndexID //设置ID
public Long id;
}
创建一个GoodsRepository去继承Resository
剩下就是很简单的使用了。
es存储数据,文档到底放在哪里
路由算法 shard=hash(routing)% number
主分片数量不可变
集群和分布式的区别
集群和分布式:
集群解决的问题:
分布式解决的问题:
集群和分布式架构往往是并存的
ElasticSearch 集群正常状态:
一个正常es集群中只有一个主节点(Master),主节点负责管理整个集群。如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点。
集群的所有节点都会选择同一个节点作为主节点。
网络原因:discovery.zen.ping.timeout 超时时间配置大一点。默认是3S
节点负载:角色分离策略
可以通过discovery.zen.minimum_master_nodes来设置最少可工作的候选主节点个数,建议设置为**(候选主节点数 / 2) + 1,** 比如,当有三个候选主节点时,该配置项的值为(3/2)+1=2,也就是保证集群中有半数以上的候选主节点。
JVM内存回收:修改 config/jvm.options 文件的 -Xms 和 -Xmx 为服务器的内存一半。