京东网站建设框架图山亭 网站建设

张小明 2026/1/10 20:29:23
京东网站建设框架图,山亭 网站建设,网络营销题库及答案2020,wordpress 中文用户一、先搞懂#xff1a;为什么需要 Spring Cloud#xff1f;#xff08;微服务痛点#xff09;单体应用#xff08;一个项目包含所有功能#xff09;的问题#xff1a;代码臃肿、开发协作难、升级风险高、并发瓶颈明显。微服务就是把单体应用拆成多个独立服务#xff08…一、先搞懂为什么需要 Spring Cloud微服务痛点单体应用一个项目包含所有功能的问题代码臃肿、开发协作难、升级风险高、并发瓶颈明显。微服务就是把单体应用拆成多个独立服务如下单服务、用户服务、库存服务但拆分后会出现新问题服务太多怎么找到对方注册发现服务配置太多数据库、端口等怎么统一管理配置中心一个请求要调用多个服务怎么简化调用远程调用多个服务实例请求怎么分配负载均衡某个服务挂了怎么避免连锁崩溃熔断降级所有服务入口不一样怎么统一访问API 网关分布式系统中怎么保证跨服务数据一致分布式事务二、Spring Cloud 核心组件按使用优先级排序1. 服务注册与发现 — 解决「服务怎么找对方」核心作用所有服务启动后自动注册到「注册中心」其他服务通过注册中心获取目标服务的地址IP 端口不用硬编码配置。主流组件Nacos阿里开源功能最全推荐、EurekaNetflix 开源简单轻量已停更。工作流程下单服务启动 → 向 Nacos 注册自己的地址如192.168.1.100:8081库存服务启动 → 也向 Nacos 注册自己的地址如192.168.1.101:8082下单服务需要调用库存服务时先向 Nacos 查询「库存服务的地址列表」Nacos 返回库存服务的可用地址下单服务直接调用。实战配置Nacos 为例1、引入依赖Spring Boot 2.x 对应 Spring Cloud Alibaba 版本!-- Nacos 服务注册发现依赖 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId version2.2.7.RELEASE/version !-- 版本需与 Spring Boot 匹配 -- /dependency2、配置application.ymlspring: application: name: order-service # 服务名称注册到 Nacos 的唯一标识 cloud: nacos: discovery: server-addr: localhost:8848 # Nacos 服务器地址本地启动的 Nacos server: port: 8081 # 下单服务端口3、启动类加注解开启服务注册发现SpringBootApplication EnableDiscoveryClient // 开启服务注册发现Spring Cloud 通用注解Nacos/Eureka 都支持 public class OrderServiceApplication { public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); } }4、启动 Nacos 服务器本地版下载 Nacos 安装包执行startup.cmdWindows访问http://localhost:8848/nacos账号密码默认nacos/nacos即可看到注册的服务。2. 配置中心Nacos Config—— 解决「配置统一管理」核心作用把所有服务的配置数据库、端口、自定义参数等集中存储在 Nacos支持「动态刷新」改配置不用重启服务、「多环境隔离」开发 / 测试 / 生产配置分开。实战配置Nacos Config 为例1、引入依赖dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-config/artifactId version2.2.7.RELEASE/version /dependency2、新建bootstrap.yml优先级比application.yml高用于加载 Nacos 配置spring: application: name: order-service cloud: nacos: config: server-addr: localhost:8848 # Nacos 地址 file-extension: yml # 配置文件格式yml/properties group: DEFAULT_GROUP # 配置分组默认即可 profiles: active: dev # 激活开发环境配置3、在 Nacos 控制台添加配置配置 IDorder-service-dev.yml格式服务名-环境名.文件格式配置内容数据库、自定义参数等spring: datasource: url: jdbc:mysql://localhost:3306/order_db?useSSLfalse username: root password: 123456 myapp: notify: true # 自定义配置4、配置注入与动态刷新Component RefreshScope // 开启动态刷新Nacos 配置修改后自动更新注入值 public class OrderConfig { Value(${myapp.notify}) private boolean notify; // getter/setter }效果修改 Nacos 中的myapp.notify为false无需重启服务OrderConfig中的notify会自动更新。3. 远程调用OpenFeign—— 解决「服务间怎么调用」核心作用简化服务间 HTTP 调用不用手动写客户端支持负载均衡、熔断降级且能和 Spring 无缝整合注解式调用。实战配置OpenFeign 为例1、引入依赖!-- OpenFeign 依赖 -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId version2.2.9.RELEASE/version /dependency2、启动类加注解开启 Feign 功能SpringBootApplication EnableDiscoveryClient EnableFeignClients // 开启 OpenFeign public class OrderServiceApplication { public static void main(String[] args) { SpringApplication.run(OrderServiceApplication.class, args); } }3、定义 Feign 接口映射库存服务的接口// 声明要调用的服务名称Nacos 中注册的 stock-service 名称 FeignClient(name stock-service) public interface StockFeignClient { // 映射库存服务的扣库存接口和 stock-service 的 Controller 接口一致 PostMapping(/stock/deduct) ResultBoolean deductStock(RequestBody StockDTO stockDTO); } // 库存服务的 DTO和 stock-service 中的 DTO 完全一致 Data public class StockDTO { private Long goodsId; private Integer num; }4、服务端stock-service的接口被调用方RestController RequestMapping(/stock) public class StockController { Autowired private StockService stockService; PostMapping(/deduct) public ResultBoolean deductStock(RequestBody StockDTO stockDTO) { boolean success stockService.deduct(stockDTO.getGoodsId(), stockDTO.getNum()); return Result.success(success); } }5、下单服务调用 Feign 接口Service public class OrderServiceImpl implements OrderService { Autowired private StockFeignClient stockFeignClient; Autowired private OrderMapper orderMapper; Transactional Override public Order createOrder(OrderDTO dto) { // 1. 远程调用库存服务扣库存 StockDTO stockDTO new StockDTO(); stockDTO.setGoodsId(dto.getGoodsId()); stockDTO.setNum(dto.getNum()); ResultBoolean deductResult stockFeignClient.deductStock(stockDTO); if (!deductResult.getData()) { throw new BusinessException(库存不足); } // 2. 创建订单本地事务 Order order new Order(); order.setUserId(dto.getUserId()); order.setGoodsId(dto.getGoodsId()); orderMapper.insert(order); return order; } }效果下单服务调用StockFeignClient.deductStock()Feign 会自动通过 Nacos 找到 stock-service 的地址发起 HTTP 请求且支持负载均衡如果 stock-service 启动多个实例会自动分发请求。4. API 网关Spring Cloud Gateway—— 解决「统一入口 路由转发」核心作用所有前端请求都通过网关进入网关负责路由转发把请求转发到对应服务、统一拦截登录校验、权限控制、限流、跨域处理等不用每个服务都单独实现这些功能。实战配置Gateway 为例1、新建网关服务独立的 Spring Boot 项目引入依赖!-- Gateway 依赖注意Gateway 基于 WebFlux不能和 spring-boot-starter-web 共存 -- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-gateway/artifactId version2.2.9.RELEASE/version /dependency !-- Nacos 注册发现依赖网关需要从 Nacos 获取服务地址 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId version2.2.7.RELEASE/version /dependency2、配置application.yml路由规则spring: application: name: gateway-service # 网关服务名称 cloud: nacos: discovery: server-addr: localhost:8848 # Nacos 地址 gateway: routes: # 路由1下单服务/order/** 开头的请求转发到 order-service - id: order-service-route uri: lb://order-service # lb负载均衡指向 Nacos 中的服务名 predicates: - Path/order/** # 路径匹配规则 filters: - StripPrefix1 # 去掉路径前缀/order/deduct → /deduct转发到 order-service # 路由2库存服务/stock/** 开头的请求转发到 stock-service - id: stock-service-route uri: lb://stock-service predicates: - Path/stock/** filters: - StripPrefix1 server: port: 8080 # 网关端口前端统一访问 80803、启动类SpringBootApplication EnableDiscoveryClient public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } }前端访问http://localhost:8080/order/create→ 网关转发到order-service的/create接口前端访问http://localhost:8080/stock/deduct→ 网关转发到stock-service的/deduct接口所有请求都走网关后续登录校验、限流等都可以在网关统一实现。5. 熔断降级Sentinel—— 解决「服务雪崩」核心作用当某个服务如库存服务挂了或响应超时调用方下单服务不会一直等待而是快速返回「降级结果」如 “当前库存服务繁忙请稍后重试”避免下单服务线程阻塞进而导致整个系统崩溃服务雪崩。主流组件Sentinel阿里开源轻量、功能强推荐、HystrixNetflix 开源已停更。实战配置Sentinel 为例1、引入依赖在下单服务中引入因为是调用方需要熔断!-- Sentinel 核心依赖 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-starter-alibaba-sentinel/artifactId version2.2.7.RELEASE/version /dependency !-- Sentinel 与 OpenFeign 整合对 Feign 调用进行熔断 -- dependency groupIdcom.alibaba.cloud/groupId artifactIdspring-cloud-alibaba-sentinel-feign/artifactId version2.2.7.RELEASE/version /dependency2、配置application.ymlspring: cloud: sentinel: transport: dashboard: localhost:8080 # Sentinel 控制台地址本地启动的 Sentinel port: 8719 # 与控制台通信的端口默认即可 feign: sentinel: enabled: true # 开启 Feign 与 Sentinel 的整合对 Feign 调用熔断3、定义 Feign 降级类服务熔断时返回的默认结果// 实现 StockFeignClient 接口重写熔断时的方法 Component public class StockFeignFallback implements StockFeignClient { Override public ResultBoolean deductStock(StockDTO stockDTO) { // 降级逻辑返回失败提示用户 return Result.fail(库存服务繁忙请稍后重试); } }4、修改 Feign 接口指定降级类FeignClient(name stock-service, fallback StockFeignFallback.class) // 指定降级类 public interface StockFeignClient { PostMapping(/stock/deduct) ResultBoolean deductStock(RequestBody StockDTO stockDTO); }5、启动 Sentinel 控制台本地版下载 Sentinel jar 包执行java -jar sentinel-dashboard-1.8.6.jar访问http://localhost:8080账号密码默认sentinel/sentinel。效果当 stock-service 正常时下单服务调用 Feign 接口正常返回当 stock-service 挂了或响应超时Sentinel 触发熔断调用StockFeignFallback.deductStock()返回 “库存服务繁忙请稍后重试”下单服务不会阻塞系统正常运行。三、其他重要组件进阶必备1. 分布式事务Seata—— 解决「跨服务数据一致性」问题下单服务创建订单本地事务调用库存服务扣库存远程事务如果扣库存成功但下单服务后续抛异常会出现「库存扣了但订单没创建」的不一致情况。解决方案Seata阿里开源支持「AT 模式」无侵入推荐通过全局事务协调器保证跨服务事务的原子性要么都成功要么都回滚。2. 服务监控Spring Cloud Actuator Prometheus Grafana作用监控每个服务的运行状态内存、CPU、接口耗时、异常数通过 Grafana 可视化展示方便运维排查问题。3. 链路追踪SkyWalking/Zipkin—— 解决「跨服务调用排查」问题一个请求要调用多个服务如前端→网关→下单服务→库存服务如果出现错误不知道是哪个服务的问题。解决方案SkyWalking追踪整个调用链路记录每个服务的执行时间、是否报错快速定位问题所在。4. 限流Sentinel/Gateway 限流—— 解决「高并发流量控制」作用限制某个接口的并发请求数如下单接口每秒最多处理 100 个请求避免高并发导致服务崩溃。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

广州网站开发多少钱响应式网站切图

第一章:Open-AutoGLM 跨应用数据安全机制在多应用协同环境中,Open-AutoGLM 通过统一的数据加密与访问控制策略,保障跨应用间的数据流转安全。系统采用端到端加密机制,确保敏感信息在传输与存储过程中均处于加密状态,仅…

张小明 2026/1/10 19:53:32 网站建设

连云港市电信网站建设西安响应式网站建设公司

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个对比测试工具,可以并行展示传统手工开发与Open WebUI开发的完整过程。功能包括:1. 相同UI需求的任务分配;2. 实时计时和步骤记录&#x…

张小明 2026/1/10 19:53:34 网站建设

建网站seo活泼风格的网站

基于纯verilogFPGA的双线性差值视频缩放 功能:利用双线性差值算法,pc端HDMI输入视频缩小或放大,然后再通过HDMI输出显示,可以任意缩放。 缩放模块仅含有ddr ip,手写了 ram,fifo 代码,可以较为轻松地移植到其…

张小明 2026/1/10 19:53:34 网站建设

厦门制作公司网站怎么给自己建网站

3分钟掌握Vue时间轴组件:timeline-vuejs终极使用指南 【免费下载链接】timeline-vuejs Minimalist Timeline ⏳ with VueJS 💚 项目地址: https://gitcode.com/gh_mirrors/ti/timeline-vuejs timeline-vuejs是一款专为Vue.js设计的极简时间轴组件…

张小明 2026/1/10 19:53:38 网站建设

精品网站源码资源程序下载如何开办自己的公司

Kotaemon如何帮助开发者通过Token售卖实现盈利? 在AI应用从实验原型走向生产落地的过程中,一个常被忽视的问题浮出水面:我们如何为这些“聪明”的系统定价?当大语言模型(LLM)的每一次对话都伴随着真实的计算…

张小明 2026/1/10 20:28:40 网站建设