manager-web 后台管理系统(activeMQ 更新商品,异步更新solr全文检索库,已经更新商品详情静态化页面)
portal-web 门户
search-web 搜索(solr 全文检索技术)
item-web 商品详情(redis缓存,页面静态化,)
cart-web 购物车(redis,多终端同步保存购物车)
order-web 订单()
SSO-web 单点登录系统(分布式session,jsonp请求验证token)
ContentCategoryService(消费者: manager-web)
ContentService(消费者: manager-web portal-web)
UserService(消费者: order-web sso-web )
ItemCatService(消费者: item-web cart-web manager-web)
ItemService(消费者: manager-web)
SearchService(消费者: search-web )
SearchItemService(消费者:manager-web )
OrderService(消费者: order-web )
- Taotao-manager
- Taotao-manager-web
- Taotao-portal-web
- Taotao-content
- Taotao-search
- Taotao-search-web
- Taotao-item-web
- Taotao-sso
- Taotao-sso-web
- Taotao-cart-web
- Taotao-order
- Taotao-order-web
12个应用,每个应用2个集群,需要24台服务器。 24
Mysql 2(mycat 一主一备 读写分离)
Solr 7(三个Solr实例( 每个实例包括两个Core),组成一个SolrCloud。)
Redis 6(3个组成集群,一主一从,3*2=6)
图片服务器 2(FastDFS Tracker+Storage 1个组,两个成员,成员存放内容一致)
Nginx 2(负载均衡,反向代理,keepalive高可用)
注册中心 3(zookeeper 3台集群,Leader选举)
Activemq 2(Master/Slave 2台 高可用 共享存储原理 3台 负载均衡 Replicated LevelDB Store 基于zookeeper 选举)
共需要48台服务器。
4. 搭建伪分布式 服务器规划 域名规划 Tomcat热部署可以使用maven实现tomcat热部署。Tomcat启动时 部署工程。
Tomcat有个后台管理功能,可以实现工程热部署。
配置方法:
第一步:需要修改tomcat的conf/tomcat-users.xml配置文件。添加用户名、密码、权限。
第二步:重新启动tomcat。
使用maven的tomcat插件实现热部署:
第一步:配置tomcat插件,需要修改工程的pom文件。
org.apache.tomcat.maven tomcat7-maven-plugin8081 / http://192.168.25.135:8080/manager/text tomcat tomcat
第二步:使用maven命令进行部署。
tomcat7:deploy tomcat7:redeploy
部署的路径是“/”会把系统部署到webapps/ROOT目录下。
部署工程跳过测试:
clean tomcat7:redeploy -DskipTests工程部署
每个工程运行在不同的tomcat上,修改tomcat的端口号。
反向代理的配置 访问举例- 用户访问 manager.taotao.com
- 通过域名配置 ,访问192.168.25.141:80
- 通过nginx反向代理
upstream manager.taotao.com {
server 192.168.25.137:8080;
}
跳转 : 192.168.25.137:8080(到达manager应用)
所有的域名应该指向反向代理服务器。
192.168.25.141 manager.taotao.com 192.168.25.141 www.taotao.com 192.168.25.141 search.taotao.com 192.168.25.141 item.taotao.com 192.168.25.141 sso.taotao.com 192.168.25.141 cart.taotao.com 192.168.25.141 order.taotao.comnginx反向代理的配置:
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; upstream manager.taotao.com { server 192.168.25.137:8080; } upstream www.taotao.com { server 192.168.25.137:8081; } upstream search.taotao.com { server 192.168.25.137:8082; } upstream item.taotao.com { server 192.168.25.138:8080; } upstream sso.taotao.com { server 192.168.25.138:8081; } upstream cart.taotao.com { server 192.168.25.139:8080; } upstream order.taotao.com { server 192.168.25.139:8081; } server { listen 80; server_name manager.taotao.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://manager.taotao.com; index index.html index.htm; } } server { listen 80; server_name www.taotao.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://www.taotao.com; index index.html index.htm; } } server { listen 80; server_name search.taotao.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://search.taotao.com; index index.html index.htm; } } server { listen 80; server_name item.taotao.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://item.taotao.com; index index.html index.htm; } } server { listen 80; server_name sso.taotao.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://sso.taotao.com; index index.html index.htm; } } server { listen 80; server_name cart.taotao.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://cart.taotao.com; index index.html index.htm; } } server { listen 80; server_name order.taotao.com; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://order.taotao.com; index index.html index.htm; } } }5. 项目拓展 电商活动倒计时方案:
1、确定一个基准时间。可以使用一个sql语句从数据库中取出一个当前时间。SELECT NOW();
2、活动开始的时间是固定的。
3、使用活动开始时间-基准时间可以计算出一个秒为单位的数值。
4、在redis中设置一个key(活动开始标识)。设置key的过期时间为第三步计算出来的时间。
5、展示页面的时候取出key的有效时间。Ttl命令。使用js倒计时。
6、一旦活动开始的key失效,说明活动开始。
7、需要在活动的逻辑中,先判断活动是否开始。
1、把商品的数量放到redis中。
2、秒杀时使用decr命令对商品数量减一。如果不是负数说明抢到。
3、一旦返回数值变为0说明商品已售完。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)