docker安装redis(哨兵模式)
准备工作,5台本地虚拟机,三台哨兵,2台redis(一主一从),安装好docker环境。(也可以在一台机器上启动5个实例,配置5个不同端口即可)
下载镜像
- 搜索redis镜像
1
docker search redis
Reading|Fitness|Coding
1 | CreateIndexRequest request = new CreateIndexRequest("product"); |
设置分片
1 | request.settings(Settings.builder() .put("index.number_of_shards", 3) .put("index.number_of_replicas", 2) ); |
设置mapping
1 | request.mapping( "{\n" + " \"properties\": {\n" + " \"message\": {\n" + " \"type\": \"text\"\n" + " }\n" + " }\n" + "}", XContentType.JSON); |
在单体应用中通过函数调用,在微服务中由于不在同一进程所以要通过网络调用,如果仅仅是改用RPC调用,会导致微服务之间产生繁琐的通信,使系统表现更为糟糕,所以需要更粗粒的的通信协议。
在微服务中通常采用以下两种调用方式:
1.可读性好,一看泛型就知道里面装的什么类型的元素
2.泛型只在编译前存在,编译后会将类型擦除并替换成其限定类型,编译后就是一个普通类。泛型可以在编译前规范代码,防止放入一些不合格的对象导致运行期报错,提高程序健壮性。
3.使用泛型让程序更灵活,各类框架就大量使用泛型
个人理解:泛型可以大概分为两部分:定义泛型和使用泛型,大多数时候我们是在使用泛型,也就是用具体类型限制,比如:List《String》,而写一些通用工具或者框架的时候需要自己定义泛型类,泛型方法等提高程序的灵活性。

例如:
1 | public class Pair<T>{ |