五谷商城——分布式手机销售网站

五谷商城——分布式手机销售网站

前言

本项目为一门课程的期末大作业,不做商业用途。
GitHub地址:https://github.com/JohnnyLeo/wugu-store.
本篇博客作为第一次做分布式系统的感想,请勿喷,嘿嘿嘿。

总体架构图

在这里插入图片描述

存在的问题

在这个架构图中可以看到,nginx节点只有一个,不能达到高可用,后期也许可以多机部署,主从冷备,一个节点下线另一个立马上线,毕竟对外暴露的接口只有一个。
session节点虽然能部署多个,但是多节点session需要解决一个问题就是如何共享session,或者可以负载均衡时用IP哈希,使得每个用户访问的节点必定是同一个。
最大的问题是数据库。一个系统最应该做分布式的应该是数据库,反而我们这个没有做,毕竟时间有限,条件有限,能力更是不足。所以数据库这儿只用了一个druid数据库连接池。
其他节点都是可以多机部署的。

开发过程的问题及解决方案

1.zuul节点的高可用问题:用户不可能直接访问eureka,对外节点又只有一个。解决方法:用nginx做服务端负载均衡。

2.JDK问题:JDK 1.8以上会有tomcat,Java.xml.bind问题。解决方法:maven导入或者更换JDK为1.8。

3.跨域sessionID每次都不一致问题:解决方法:zuul网关设置不过滤header信息。(当然后期并没有用原生的sessionID,而是用UUID自己生成的,所以这个问题影响不大)

4.cookie跨域名使用问题:其实这个不算跨域名使用,只是生成cookie节点的默认设置为当节点的域名和同级可访问,所以其他节点访问不到。解决方法:设置cookie.setDomain(“域名”),cookie.setPath("/")。

5.restTemplate的多参和复杂对象的传递与接收问题:其实它是可以传递对象的,多参也可以封装成对象来传递。前期解决办法:fastjson封装成json字符串。

6.服务地址太多:分布式的主机有很多,难以维护url:解决办法:制定URI约束文件。

7.登录状态的检测:如果每个节点都去判断是否登录,代码冗余,难以维护。解决方法:zuul中登录过滤,(还有非法URL访问过滤)

感想

做项目和不做项目各有各的好处和坏处。
做项目可以在中间发现各种各样的问题,积累经验。改进写代码的熟读与规范度。(这儿推荐看Java开发手册(阿里巴巴编码规范))
不做项目可以学很多东西,前提是不贪玩,就这个简陋的项目都花了我1个月,而且还有另外4小伙伴和我一起合伙开发。难受。

发布了6 篇原创文章 · 获赞 4 · 访问量 95

猜你喜欢

转载自blog.csdn.net/qq_42661628/article/details/103490289