![495f1d517e0456ae39121d164f95f511.png](https://i-blog.csdnimg.cn/blog_migrate/d8149c450000238f85a6fbf55c78b03c.jpeg)
【89】
1 商城门户 ego-portal-web 系统需求分析
1.1 搭建 Redis 集群环境
⚫ 实现 redis3 主 3 从集群搭建
1.2 实现门户首页商品类目显示
⚫ 加载商品类目 ⚫ 实现商品类目缓存
1.3 实现每户首页大广告轮播
⚫ 加载大广告列表 ⚫ 实现广告轮播 ⚫ 实现大广告数据缓存
1 本节任务
搭建 Redis 3 主 3 从集群环境 JedisCluster 访问 Redis 集群
2Redis 集群环境搭建
2.1Redis 集群架构
![e8070566cf9d4df933fc2a4e3888dd1c.png](https://i-blog.csdnimg.cn/blog_migrate/37b44b58bfe1a67f765800f9ea4f0dd9.jpeg)
集群说明: Redis3.0 开始支持集群,在每个 Master 上存放着各不相同的数据,即分布式存储的思想。 集群中的每个节点都需要知道集群中自己之外的其它节点。
Redis 集群主(Master(M1,M2,M3))从(Slave(S1,S2,S3))复制、读写分离 。Master 只负责写和 同步数据给 Slave,Slave 负责被读的任务,通过 Slave 的扩容提高读的速度。
所有的 redis 节点彼此互联(PING-PONG 机制), 节点的 fail 是通过集群中超过半数的节 点检测失效时才生效。
客户端不需要连接集群所有的节点,连接集群中任何一个可用的节点即可,redis-cluster 把 所有的物理节点映射到[0~16383]slot 上,cluster 负责维护 node<->slot<->value。
2.2Redis 集群数据存储原理
整个 Redis 集群将集群存储空间分为 16384 个 Slot(槽),将 16384 个 Slot 分散到集群中的每 个服务器节点。
![66a7edae431f273286dfc2d3cabd8d2b.png](https://i-blog.csdnimg.cn/blog_migrate/f0a7585c65bce37ed26f33d800d66930.png)
在集群存储数据的时候,首先进行 CRC16(key) % 16384=0…..16383 计算 , 然后根据运算结 果将 key 对应的执行保存到对应的 Slot
2.4.3redis-common 集群配置
将原始的 redis.conf 配置文件,拷贝到/opt/redis/conf
拷贝到 redis 集群的公共配置目录。
建议在本地将 redis.conf 文件进行配置,上传到/opt/redis/conf
![13c7184b947c11b9d867bba82ba3485b.png](https://i-blog.csdnimg.cn/blog_migrate/130a963f207ef550ccd14ad9db8c2836.jpeg)
![91f61930913709ea11ffccc13f4d86bf.png](https://i-blog.csdnimg.cn/blog_migrate/fc21835bd046ad4423c305b29d3e125c.jpeg)
![d25bac27c0b2e89332cb55160197757b.png](https://i-blog.csdnimg.cn/blog_migrate/ed7d7a66838c45362fd28e3fc07ddd7a.jpeg)
![276fea9e2db60f2ab0a860f0ed9f2931.png](https://i-blog.csdnimg.cn/blog_migrate/4c873613b575e9f59840490b4f2aac1f.jpeg)
![103f43b6e012deb49e144be710492ceb.png](https://i-blog.csdnimg.cn/blog_migrate/972080668e687f69b60ac6d7e2b47e53.jpeg)
![9caebe58b72ca7136920def3591a5707.png](https://i-blog.csdnimg.cn/blog_migrate/e5d215a457eeffa7fe3177d89854c637.jpeg)
![ab69a104b285f9738da4ac76bea86f08.png](https://i-blog.csdnimg.cn/blog_migrate/b6c7b76cac3be6237ef3d851474f4679.jpeg)
1 本节任务
基于 SOA 架构,创建 ego-portal-web 门户项目
2 搭建 ego-portal-web 项目环境
2.1 项目架构
Ego-portal-web 服务的消费者,ego-rpc 服务提供者
![99bc2bc84d5f04c184edc30259bdd935.png](https://i-blog.csdnimg.cn/blog_migrate/8906e42f7978f8c86b0827dc3fc8aa4e.jpeg)
2.2 建立 ego-portal-web 项目
继承:ego 依赖:ego-common、ego-rpc-service
1 本节任务
加载 ego-portal-web 首页商品类目
2 加载门户首页商品类目
2.1 前端参数分析
srcmainwebappjslib-v1.js
![7f29250b6b806b1b33a02eb784e23f28.png](https://i-blog.csdnimg.cn/blog_migrate/33623a43595f59a83598dbd01c42d443.jpeg)
响应到前台数据模型:
![1016eba7e71d6f38ae3be7f6612a7c61.png](https://i-blog.csdnimg.cn/blog_migrate/11c414422e31d8886f6f638f01380fb6.jpeg)
![bf7512899190bd30a31d08929864ad21.png](https://i-blog.csdnimg.cn/blog_migrate/370e5b1a50957de2b8cbaa348145dca3.jpeg)
![617a054f7e3b37bfed7a2896d0ff491d.png](https://i-blog.csdnimg.cn/blog_migrate/0339b50c1e8481f6d1defce995fce322.jpeg)
![6c31e205d69d0c70eb504ec3ceb5c698.png](https://i-blog.csdnimg.cn/blog_migrate/4fed43de80a036c59e9f5256ad8f1c93.jpeg)
![e42b6c13b18763515061804e029ac813.png](https://i-blog.csdnimg.cn/blog_migrate/3683d495e0232f54e695b6a39433fc99.jpeg)
![4be6773c24991ac7d179b484246b4a13.png](https://i-blog.csdnimg.cn/blog_migrate/72f909a8d952e3e9b1a4fd83c033619b.jpeg)
![c8b2746530ccde807a1355b99dad623d.png](https://i-blog.csdnimg.cn/blog_migrate/8123501e0b64e10d3876bb1d380383be.jpeg)
![174ab7ee7c964380a391c901deba6979.png](https://i-blog.csdnimg.cn/blog_migrate/eaf8401b594caba44ee9825b43a0fe77.jpeg)
![fd4c2f9b2102de4f0becbe73212f60ad.png](https://i-blog.csdnimg.cn/blog_migrate/2267c9b96552b1959d3859e32d163b71.jpeg)
![a6a343a26198f3e7ec1428698bec2816.png](https://i-blog.csdnimg.cn/blog_migrate/d311d599949d985ef0ef231f70c84424.jpeg)
![a2fd8c3c6b82b43a9fb04427e681a21d.png](https://i-blog.csdnimg.cn/blog_migrate/485977246df0f5ec261675a8bcea3507.jpeg)
![a4cc5b3c350c10af8d36cb84ed22166a.png](https://i-blog.csdnimg.cn/blog_migrate/3f253574aa1035864119ffc02e3839c6.jpeg)
![6ffb4ae371d9beb8ccef8d7702b32942.png](https://i-blog.csdnimg.cn/blog_migrate/b316e8aa799abfe268b240a69ad8f3ba.jpeg)
![d0564f947303a2c09b44388db414879a.png](https://i-blog.csdnimg.cn/blog_migrate/65ef8c82f0a0d10e58f965fd2583b8ca.jpeg)
![80705105127259288550cc09059b63be.png](https://i-blog.csdnimg.cn/blog_migrate/ecfffb88c236f9c8e69f65119adefb05.jpeg)
![52c4932a5bd901893e1e48a22d324baf.png](https://i-blog.csdnimg.cn/blog_migrate/230351c2e718ff3f1d18989af90a185d.jpeg)
![7b4aaefae2732d2a3a90324c6ff7ade3.png](https://i-blog.csdnimg.cn/blog_migrate/7d5faa92b263791a60a52c771d237135.jpeg)
![33c2453e2df68c1f9ab0030d95fb7ca6.png](https://i-blog.csdnimg.cn/blog_migrate/928d3fda025071ffa313a08c01254685.jpeg)
![a15a49fd1fa98478a72a0823fdf34823.png](https://i-blog.csdnimg.cn/blog_migrate/001742d42c0c4579b6550a534a86ec21.jpeg)
1 本节任务
实现门户首页打广告位加载
2 实现内容分类节点的分页显示
2.1 前端参数分析
![40b74ffe5426041fc8aa6c031b91539f.png](https://i-blog.csdnimg.cn/blog_migrate/06b5b5e3b698506ba39fd74c7feb2ce0.jpeg)
![3449ed0f1901e8794f1ed077ddeec873.png](https://i-blog.csdnimg.cn/blog_migrate/729482fdf10042adc48b87d8138160a7.jpeg)
2.2 数据库表说明
查询 tb_content where category_id=?
![6b785c354e1cd7cae175b2aac07670e0.png](https://i-blog.csdnimg.cn/blog_migrate/f66f9fbab4841b077ede2896dc18cd8b.jpeg)
![48acd0e2d599b795fee2dda0d89a81c5.png](https://i-blog.csdnimg.cn/blog_migrate/fcd6b2b36365e20d6f9909eef1b50f29.jpeg)
![090bdd2dd51fb6efc98a820deac735f2.png](https://i-blog.csdnimg.cn/blog_migrate/96b9e894637c265f6e7eacd5b306519a.jpeg)
![56ff8e29dea5e074832dbcc849078266.png](https://i-blog.csdnimg.cn/blog_migrate/e73b0cfbf68b6ed28580fed5d5792399.jpeg)
![029d40b1bc1dc29e1bd4e5b9945df106.png](https://i-blog.csdnimg.cn/blog_migrate/5556fc9cd5071004e269eae9fa745f20.jpeg)
2.4.3 创建 PortalContentServiceImpl 实现
![fe86d71eccdf234239e715f68225ee42.png](https://i-blog.csdnimg.cn/blog_migrate/91cba9a31dd8072baf04e7cc46053d75.jpeg)
![7de6d2be21e2b4ddddfde6c9c5f7fe2f.png](https://i-blog.csdnimg.cn/blog_migrate/d4efa490964393b1cc063d2ebfbe19d4.jpeg)
2.4.4 创建 PortalContentController
![7bb1508e5f668614bfc768553c171741.png](https://i-blog.csdnimg.cn/blog_migrate/20a2f22a542bf18e10f2527f740a3aa0.jpeg)
![ebcbcbaaa082573efea99ca35c211baf.png](https://i-blog.csdnimg.cn/blog_migrate/b32dc78f200674bf19ff1484290439ce.jpeg)
1 本节任务
实现门户首页商品类目数据缓存
2 实现商品类目数据缓存
2.1 实现数据缓存系统架构
如果redis缓存中没有数据,通过调用ego-rpc服务,查询数据库获得商品类目数据,将ego-rpc 返回的数据进行处理,保存到 redis 缓存,在返回到 ego-portal-web 进行展示
如果 redis 缓存中有数据,直接将缓存中的数据,返回给 ego-portal-web,不用调用 ego-rpc 服 务查询数据库。
![cdeb38bf3b185d6066e07fadfe728fa0.png](https://i-blog.csdnimg.cn/blog_migrate/a05e4b288447e3d704cbc631f2e36701.jpeg)
![3352fd040f8f9bc088528511ecb6ff35.png](https://i-blog.csdnimg.cn/blog_migrate/0e3bf58c910638eccc7b69a79b80d26b.jpeg)
![a4a3164b675ff843791d99d8bb7cac50.png](https://i-blog.csdnimg.cn/blog_migrate/f66b3d4c1b57c9c1254fe8e8679afe67.jpeg)
![d16b16e1531c28d83f716b4dc88dfd51.png](https://i-blog.csdnimg.cn/blog_migrate/ae260664dadbf23acd7b4c061e476138.jpeg)
![cdad45db01265f4be58d34d036a0bcbe.png](https://i-blog.csdnimg.cn/blog_migrate/9b55f4075cb592558efe21ceb3165307.jpeg)
2.2.4 修改 ProtalItemCatSrviceImpl 实现
![db3779322f61ec1d1efcc645bb5527fd.png](https://i-blog.csdnimg.cn/blog_migrate/4c38f0eb26a4381bdfd3cad5c418ec05.jpeg)
![a391a72187c6ac15e826d9d9b4be9ee7.png](https://i-blog.csdnimg.cn/blog_migrate/26d9846ea679836e0d7d8d76f9f33c0d.jpeg)
![349c22df70855a00e1a2a07ed99b47bf.png](https://i-blog.csdnimg.cn/blog_migrate/65e68ce42b4048780096f8e984eb8e85.jpeg)
![fb5a2f117280b5ba34b93dd32fbec3b5.png](https://i-blog.csdnimg.cn/blog_migrate/bdd2d1a8decd72ebc2ddd2701feb54f4.jpeg)
![a156a5940be629d55967c194690a7266.png](https://i-blog.csdnimg.cn/blog_migrate/12c38bb117eb812e68d8bcb5c392ac10.jpeg)
2.3 发布项目进行缓存测试
1 本节任务
实现门户首页大广告数据缓存
2 实现大广告数据缓存
2.1 实现数据缓存系统架构
如果redis缓存中没有数据,通过调用ego-rpc服务,查询数据库获得商品类目数据,将ego-rpc 返回的数据进行处理,保存到 redis 缓存,在返回到 ego-portal-web 进行展示
如果 redis 缓存中有数据,直接将缓存中的数据,返回给 ego-portal-web,不用调用 ego-rpc 服 务查询数据库。
![d6d1b84e3a593711905f7b2e28ec7811.png](https://i-blog.csdnimg.cn/blog_migrate/abeb2f0c58467034fea6eb38ddb157c5.jpeg)
![77199553646911a26f7c0f6a175ee137.png](https://i-blog.csdnimg.cn/blog_migrate/1a61334be0d86af31f9bf8cee65954eb.jpeg)
2.2.2 修改 ProtalContentSrviceImpl 实现类
![04141a9b538344a31b525374188147bb.png](https://i-blog.csdnimg.cn/blog_migrate/ab0b21766a126cbe6246cb157cfe2de3.jpeg)
![50b6f101c1b4f619a4ce3c2c9a56fe67.png](https://i-blog.csdnimg.cn/blog_migrate/ec2dba533ad984d309215ecde4a3bcd7.jpeg)
![3e53f6fbe537fee355fbeda008b47a3c.png](https://i-blog.csdnimg.cn/blog_migrate/fee0767b5764394134d161be31af3665.jpeg)
![a45cfc67ea3e3e50dc425864350830cf.png](https://i-blog.csdnimg.cn/blog_migrate/175f49052f5e68f74d8ae52239a067a5.jpeg)