e3mall Day08

来源:互联网 发布:python 文字水印 编辑:程序博客网 时间:2024/06/12 20:05

solr集群:SolrCloud
同步索引库:消息队列

topic01 solrCloud

zookeeper集群管理器 自身高可用 投票机制
主从solr服务器,分片shard,组成collection
搭伪集群 内存大一些1G

学会zookeeper集群搭建(/usr/local/solr-cloud/zookeeper0x)

创建data目录 myid
改配置:
dataDir
节点列表:
server.1=192.168.230.200:2881:3881
server.2=192.168.230.200:2882:3882
server.3=192.168.230.200:2883:3883

start-all.sh脚本编写

solr集群

4个solr布置到tomcat(直接复制单机版的solr项目目录)
【未解之谜】*改tc conf/server.xml 三个端口号???!为什么呀
8005==》8105
8080==》8180
8009==》8109

solrhome四份,并且修改tomcat的solr的配置,关联上
web.xml的env-entry

solrhome的solr.xml:单机版不需要,集群版就需要配置了!
host hostport(8180 8280 8380)

solr和zookeeper关联:

tomcat0x/bin/catalina.sh 改JAVA_OPTS
加在$JAVA_OPTS是引用之前的一句话:
JAVA_OPTS=”-DzkHost=(三个zookeeper的host和port)”
便于tc运行solr工程时候找到zookeeper集群所在地

zookeeper管理一份配置文件;
./zkcli.sh -zkhost

192.168.230.100:2181,192.168.230.100:2182,192.168.230.100:2183

-cmd upconfig -confdir /usr/local/solr-

cloud/solrhome01/collection1/conf -confname myconf
使用zookeeper0x的bin/zkCli.sh -server
连接到集群

启动tomcat 可以使用批处理脚本

collection管理(页面)

创建新的(collection),并分片命令(浏览器中)
http://192.168.230.100:8180/solr/admin/collections?

action=CREATE&name=collection2&numShards=2&replicationFactor=2
不同collection之间:独立的索引库
也可以浏览器删除collection
http://192.168.230.100:8180/solr/admin/collections?

action=DELETE&name=collection1

使用solrj管理集群

配置文件切换单机/集群
要义:与单机版的区别类似redis和集群版的实现

topic02 new topic 消息队列 消息中间件

需求:manager添加商品时候发送消息同步到索引库
消息发布的方式:
点对点
广播

Activemq搭建

step0:jdk
step1:解压acticemq
jar:加入java项目5.12
spring的话不用这个版本的
客户端5.11版本spring可用

step3:bin/activemq start
bin/activemq stop

step4:后台:8161

step5:登陆:admin admin
*405错误:配置hosts
/etc/sysconfig/network

功能测试

step1:manager-service 添加客户端依赖 activemq 5.11
(queue,topic)
step2:发送者producer代码编写
step3:接受者者consumer代码编写
setMessageListener:
匿名内部类的方法:onMessage强转,得到消息,tc块

**bonus:持久化topic消息:在服务端注册客户端id

topic03 全局异常处理(异常全部抛给相应工程的表现层)

在表现层创建处理类:implements HandlerExceptionResolver
log4j.properties加在resources元目录下

最后别忘在springmvc.xml配置bean

注:sl4j 是对log4j的封装,底层还可以是commons-log等
写日志时必须的://sl4j
private static final Logger logger =
LoggerFactory.getLogger(GlobalExceptionResolver.class);
logger.xxx

原创粉丝点击