谷粒商城-高级篇(认证服务)
一、 环境搭建 创建认证模块 pom.xml 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> < ...
谷粒商城-高级篇(SSO-单点登录)
Single Sign On 一处登陆、处处可用 参考:https://gitee.com/xuxueli0323/xxl-sso.git 一、项目搭建 结构: gulimall-test-sso-client 登录服务器 8080 ssoserver.com gulimall-test-sso-client 项目 1 8081 client1.com 123127.0.0.1 ssoserver.com127.0.0.1 client1.com127.0.0.1 client2.com 核心: 三个系统即使域名不一样,想办法给三个系统同步同一个用户的票据 1、 中央认责服务器:ssoserver.com 2、 其他系统‘想要登录去 ssoserver.com 登录,登录成功跳转回来 3、只要一个登录,其他都不用登录 4、全系统一个ss0-sessionid; 所有系统可能域名都不相同 二、项目流程图 三、项目代码1.gulimall-test-sso-client pom 123456789101112131415161718<depend ...
RabbitMQ 集群
一、 clustering1、使用集群的原因 如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障情况。单台 RabbitMQ 服务器可以满足每秒 1000 条消息的吞吐量,那么如果应用需要 RabbitMQ 服务满足每秒 10 万条消息的吞吐量呢?购买昂贵的服务器来增强单机 RabbitMQ 务的性能显得捉襟见肘,搭建一个 RabbitMQ 集群才是解决实际问题的关键 。 2、搭建步骤 测试之前需要准备三台机器,保证都装好了 rabbitmq 192.168.64.132 192.168.64.133 192.168.64.134 修改 3 台机器的主机名称 1vim /etc/hostname 配置各个节点的 hosts 文件,让各个节点都能互相识别对方 1vim /etc/hosts 123192.168.64.132 node1192.168.64.133 node2192.168.64.134 node3 以确保各个节点的 cookie 文件使用的是同一个值 在 node1 上执行远程操作命令 123scp /var/lib/ra ...
谷粒商城-高级篇(检索服务)
一、添加模板页面12345<!-- 模板引擎 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId></dependency> 将资料中的前端页面放到 search 服务模块下的 resource/templates 下; 二、配置请求跳转1、配置 Nginx 转发配置 Windows hosts 文件: 1192.168.56.10 search.gulimall.com 找到 Nginx 的配置文件,编辑 gulimall.conf,将所有 *.gulimall.com 的请求都经由 Nginx 转发给网关; 12345server { listen 80; server_name gulimall.com *.gulimall.com; ... } 然后重启 Ngi ...
RabbitMQ
一、消息队列1、MQ 的相关概念 什么是 MQ MQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不过队列中存放的内容是 message 而已,还是一种跨进程的通信机制,用于上下游传递消息。在互联网架构中,MQ 是一种非常常见的上下游“逻辑解耦+物理解耦”的消息通信服务。使用了 MQ 之后,消息发送上游只需要依赖 MQ,不用依赖其他服务。 为什么要用 MQ 流量消峰 举个例子,如果订单系统最多能处理一万次订单,这个处理能力应付正常时段的下单时绰绰有余,正常时段我们下单一秒后就能返回结果。但是在高峰期,如果有两万次下单操作系统是处理不了的,只能限制订单超过一万后不允许用户下单。使用消息队列做缓冲,我们可以取消这个限制,把一秒内下的订单分散成一段时间来处理,这时有些用户可能在下单十几秒后才能收到下单成功的操作,但是比不能下单的体验要好。 应用解耦 以电商应用为例,应用中有订单系统、库存系统、物流系统、支付系统。用户创建订单后,如果耦合调用库存系统、物流系统、支付系统。任何一个子系统出了故障,都会造成下单操作异常。当转变成为基于消息队列的方 ...
谷粒商城-高级篇(分布式锁与缓存)
一、缓存1、本地缓存 1.1 使用 hashmap 本地缓存123456789101112//测试本地缓存,通过hashmapprivate Map<String,Object> cache=new HashMap<>();public Map<String, List<Catalog2Vo>> getCategoryMap() { Map<String, List<Catalog2Vo>> catalogMap = (Map<String, List<Catalog2Vo>>) cache.get("catalogMap"); //如果没有缓存,则从数据库中查询并放入缓存中 if (catalogMap == null) { catalogMap = getCategoriesDb(); cache.put("catalogMap",catalogMap); } ...
谷粒商城-高级篇(ElasticSearch)
一、product-es 准备 ES 在内存中,所以在检索中优于 mysql。ES 也支持集群,数据分片存储。 需求: 上架的商品才可以在网站展示。 上架的商品需要可以被检索。 1.1 分析 sku 在 es 中如何存储商品 mapping 分析:商品上架在 es 中是存 sku 还是 spu? 1)、检索的时候输入名字,是需要按照 sku 的 title 进行全文检索的 2)、检素使用商品规格,规格是 spu 的公共属性,每个 spu 是一样的 3)、按照分类 id 进去的都是直接列出 spu 的,还可以切换。 4〕、我们如果将 sku 的全量信息保存到 es 中(包括 spu 属性〕就太多字段了 方案 1: 123456789101112{ skuId:1 spuId:11 skyTitile:华为xx price:999 saleCount:99 attr:[ {尺寸:5}, {CPU:高通945}, {分辨率:全高清} ] ...
CentOS 7 安装 RabbitMQ
一、安装1.1 官网地址https://www.rabbitmq.com/download.html RabbitMQ(3.8.8): https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.8.8 erlang(22.3):https://www.erlang-solutions.com/downloads/ 1.2 文件上传 上传到**/usr/local/software** 目录下(如果没有 software 需要自己创建) 1.3 安装文件(分别按照以下顺序安装)12# 安装erlangrpm -ivh esl-erlang_22.3.1-1_centos_7_amd64.rpm 注意:安装时出现这个错误 warning: esl-erlang_22.3.1-1_centos_7_amd64.rpm: Header V4 RSA/SHA1 Signature, key ID a14f4fca: NOKEYerror: Failed dependencies: 执行以下命令: sudo y ...
ElasticSearch
语雀文档库: https://www.yuque.com/imoyt/zssuuf/gcbz67 一、简介mysql 用作持久化存储,ES 用作检索 基本概念:index库>type表>document文档 index 索引 动词:相当于 mysql 的 insert 名词:相当于 mysql 的 db Type 类型 在 index 中,可以定义一个或多个类型 类似于 mysql 的 table,每一种类型的数据放在一起 Document 文档 保存在某个 index 下,某种 type 的一个数据 document,文档是 json 格式的,document 就像是 mysql 中的某个 table 里面的内容。每一行对应的列叫属性 为什么 ES 搜索快?倒排索引 保存的记录 红海行动 探索红海行动 红海特别行动 红海记录片 特工红海特别探索 将内容分词就记录到索引中 词 记录 红海 1,2,3,4,5 行动 1,2,3 探索 2,5 特别 3,5 纪录片 4, 特工 5 检索: 1)、红海特 ...
CentOS 7 安装 Elasticsearch
一、Docker 安装 Es 安装之前先检查自己docker 环境是否正常,以及建议把docker 下载镜像源修改为阿里镜像 1、下载镜像文件1234docker pull elasticsearch:7.4.2 存储和检索数据# kibana 可以选择性安装docker pull kibana:7.4.2 可视化检索数据 2、创建实例① ElasticSearch ElasticSearch 配置 12345678910# 将docker里的目录挂载到linux的/mydate目录中mkdir -p /mydata/elasticsearch/config# 修改/mydate就可以改掉docker里的mkdir -p /mydata/elasticsearch/data#es 可以被远程任何机器访问echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml# 递归更改权限, es需要访问 (保证权限)chmod -R 777 /mydata/elas ...