微服务商城架构
2024-03-18 16:03:19 0 举报
AI智能生成
登录查看完整内容
远程调用 服务注册 配置中心 服务熔断 API网关
作者其他创作
大纲/内容
一个发布,一个接收
点对点式
一个发布,多个接收
发布订阅式
模式
activemq
java
java消息服务jdbc
jms
rabbitmq
跨语言
高级消息队列协议
amqp
实现
publisher生产者
message头+体route-key 路由键
路由键和队列名完全匹配
点对点
direct
全部广播
广播
fanout
# 0个或者多个单词
* 一个单词
部分广播
发布订阅
topic
exchange交换机负责接收消息
Queue队列存储消息
broker消息代理
一个连接多个信道channel
connection连接
Consumer消费者
消息确认机制
消息队列
feign
HTTP+JSON
远程调用
nacos
服务注册/发现&注册中心
配置中心
当其中一个服务不可用时,有可能会造成雪崩效应
设置服务的超时,当被调用的服务经常失败到达某个阈值,我们可以开启断路保护机制,后来的请求不再去调用这个服务。本地直接返回默认的数据
服务熔断
在运维期间,当系统处于高峰期,系统资源紧张,我们可以让非核心业务降级运行。降级:某些服务不处理,或者处理简单【抛异常、返回NULL、调用Mock数据、调用Fallback处理逻辑】
服务降级
服务熔断&服务降级
负载均衡到某个服务器
动态路由到指定服务
Nginx把请求转交给API网关
对服务进行熔断或降级
认证授权
限流(只放行部分到服务器)
gateway
API网关
(分片+哨兵集群+主从架构)
redis集群
读写分离和分库分表
持久化使用mysql
异步解耦,分布式事务的一致性
消息队列(RabbitMQ)
全文检索,检索商品信息
ElaticSearch
阿里云的对象存储服务OSS
使用ELK对日志进行处理,使用LogStash收集业务里的各种日志,把日志存储到ES中,用Kibana可视化页面从ES中检索出相关信息
日志
使用springcloud提供的Sleuth、Zipkin、Metrics,把每个服务的信息交给开源的Prometheus进行聚合分析,再由Grafana进行可视化展示,提供Prometheus提供的AlterManager实时得到服务的告警信息,以短信/邮件的方式告知服务开发人员
服务追踪
有了持续集成后开发人员可以将修改后的代码提交到github,运维人员可以通过自动化工具Jenkins Pipeline将github中获取的代码打包成docker镜像,最终是由k8s集成docker服务,将服务以docker容器的方式运行
持续集成和持续部署
分布式
docker
mybatis-plus 的内容,会在项目中配置一些内容,告诉此项目执行delete语句时并不删除,只是标志位
逻辑删除
协议,域名,端囗都要相同,其中有一个不同都会产生跨域
指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对js施加的安全限制。
跨域是要请求的、新的端口那个服务器限制的,不是浏览器限制的。
跨域请求的实现是通过预检请求实现的,先发送一个OPSTIONS探路,收到响应允许跨域后再发送真实请求
设置nginx包含admin和gateway。都先请求nginx,这样端口就统一了
https://blog.csdn.net/hancoder/article/details/106922139
在服务端配置允许跨域
让服务器告诉预检请求能跨域
解决方案
跨域问题
javax.validation.constraints
注解禁止元素为null,能够接收任何类型
@NotNull
该注解修饰的字段不能为null或""
@NotEmpty
该注解不能为null,并且至少包含一个非空格字符。接收字符序列
@NotBlank
注解
添加注解的时候,修改message@NotBlank(message = "品牌名必须非空")
controller中加校验注解@Valid,开启校验
给校验的Bean后,紧跟一个BindResult,就可以获取到校验的结果。
统一异常处理 @ExceptionHandler
JSR303校验
token
xxl-sso
多系统单点登录
session
问题
商城
0 条评论
回复 删除
下一页