品牌搜索引擎服务优化宁波seo推广咨询

张小明 2026/1/9 11:16:33
品牌搜索引擎服务优化,宁波seo推广咨询,凤山网站seo,net淘宝网站开发的例子一、前言至此#xff0c;微服务的基本开发我们就学习完了#xff0c;接下来学习的是为了简便维护成本和保障服务安全的技术了#xff0c;这里首先要讲的就是配置管理#xff0c;配置管理是通过Nacos来实现的#xff0c;对复用率高的配置进行统一管理共享#xff0c;所以在…一、前言至此微服务的基本开发我们就学习完了接下来学习的是为了简便维护成本和保障服务安全的技术了这里首先要讲的就是配置管理配置管理是通过Nacos来实现的对复用率高的配置进行统一管理共享所以在微服务的配置文件中就只需要写参数和部分特殊配置了简便了开发并且方便了后期的维护。同时Nacos的配置管理具有热部署的功能也就是无需重启服务即可更改配置所以对于服务的日常维护是有很大好处的。二、共享配置刚刚提到了共享配置其实就是说一份配置多个微服务共同使用比如像数据库和日志的配置配置的结构完全相同仅仅是少部分参数略有不同这个时候就可以直接共享配置了。比如购物车微服务先前的配置如下server: port: 8082 spring: application: name: cart-service profiles: active: dev datasource: url: jdbc:mysql://${hm.db.host}:3306/hm-cart?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver username: root password: ${hm.db.pw} mybatis-plus: configuration: default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler global-config: db-config: update-strategy: not_null id-type: auto logging: level: com.hmall: debug pattern: dateformat: HH:mm:ss:SSS file: path: logs/${spring.application.name} knife4j: enable: true openapi: title: 商品服务接口文档 description: 信息 email: zhanghuyiitcast.cn concat: 虎哥 url: https://www.itcast.cn version: v1.0.0 group: default: group-name: default api-rule: package api-rule-resources: - com.hmall.cart.controller可以看到是很冗长的接下来我们拆分配置将可以值得共享的配置拿出来创建为一个共享配置在Nacos中操作1.数据库spring: datasource: url: jdbc:mysql://${hm.db.host:192.168.242.130}:${hm.db.port:3306}/${hm.db.database}?useUnicodetruecharacterEncodingUTF-8autoReconnecttrueserverTimezoneAsia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver username: ${hm.db.un:root} password: ${hm.db.pw:123} mybatis-plus: configuration: default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler global-config: db-config: update-strategy: not_null id-type: auto2.日志logging: level: com.hmall: debug pattern: dateformat: HH:mm:ss:SSS file: path: logs/${spring.application.name}3.文档knife4j: enable: true openapi: title: ${hm.swagger.title:黑马商城接口文档} description: ${hm.swagger.desc:黑马商城接口文档} email: zhanghuyiitcast.cn concat: 印东升 url: https://www.itcast.cn version: v1.0.0 group: default: group-name: default api-rule: package api-rule-resources: - ${hm.swagger.package}最终在nacos中就会变成这样4.微服务配置接下来我们就只需要在微服务的配置对应的参数即可注意下面的配置是在bootstrap.yaml中配置的其中在对nacos的配置中注明了共享配置的id以便于作为模板使用这里我们就需要配置刚刚上面三个共享配置的id了这个id是在nacos中自定义的。server: port: 8082 feign: okhttp: enabled: true # 开启OKHttp功能 hm: db: database: hm-cart swagger: title: 黑马商城购物车服务接口文档 package: com.hmall.cart.controllerspring: application: name: cart-service profiles: active: dev cloud: nacos: server-addr: 192.168.242.130:8848 config: file-extension: yaml shared-configs: ->private void checkCartsFull(Long userId) { int count lambdaQuery().eq(Cart::getUserId, userId).count(); if (count cartProperties.getMaxItems()) { throw new BizIllegalException(StrUtil.format(用户购物车数量不能超过{}, cartProperties.getMaxItems())); } }自然先得创建一个配置类用于导入配置文件的配置参数注意了这个配置我们是交给nacos的Nacos 中 Data ID 默认是服务名.yml所以这里我们要注意按照规范定义共享配置的配置名这个配置名决定了nacos中的配置应用在哪个微服务中将配置绑定到对应微服务专属的Spring IoC容器中比如这里是cart-service那么其他微服务就不会识别到这个配置了。Data Component ConfigurationProperties(prefix hm.cart) public class CartProperties { private Integer maxItems; }这个时候我们就可以直接在nacos中更改配置参数了可以发现即使微服务不重启配置的参数也会更改这就是热更新。四、动态路由路由是通过网关来转发的所以这里的所有配置都是网关的首先先用共享配置配置网关这里只需要一个日志配置就行了同时路由配置我们就不要写死了这里面都是写死的配置所以我们全部删除了spring: application: name: gateway profiles: active: dev cloud: nacos: server-addr: 192.168.242.130:8848 config: file-extension: yaml shared-configs: ->server: port: 8080 spring: application: name: gateway cloud: nacos: server-addr: 192.168.242.130 hm: jwt: location: classpath:hmall.jks alias: hmall password: hmall123 tokenTTL: 30d auth: excludePaths: - /search/** - /users/login - /items/** - /hi这个就是动态路由加载器它的原理是用NacosConfigManager获取nacos中的配置然后更新路由表注意这里我们必须使用JSON格式来配置路由因为之前配置文件中的路由底层其实是交给一个类来封装的也就是说每一个微服务的路由都是一个类的对象而这个封装的类就是RouteDefinition所以我们最后交给监听器的是RouteDefinition对象的集合其中的每个对象是由nacos中的JSON配置转化过来的。而监听器监听的是什么呢其实就是nacos控制台中配置的更改只要配置一改变监听器就会执行updateConfigInfo方法从而更新路由表。Component Slf4j RequiredArgsConstructor public class DynamicRouteLoader { private final NacosConfigManager nacosConfigManager; private final RouteDefinitionWriter writer; private final String dataId gateway-routes.json; private final String group DEFAULT_GROUP; private final SetString routeIds new HashSet(); PostConstruct//在Bean初始化后执行 public void initRouteConfigListener() throws NacosException { //1.项目启动时先拉起一次配置并且添加配置监听器 String configInfo nacosConfigManager.getConfigService() .getConfigAndSignListener(dataId, group, 5000, new Listener() { Override public Executor getExecutor() { return null; } Override public void receiveConfigInfo(String configInfo) { //2.监听到配置变更需要去更新路由表 updateConfigInfo(configInfo); } }); //3.第一次读取到配置也需要更新到路由表 updateConfigInfo(configInfo); } public void updateConfigInfo(String configInfo) { log.debug(监听到路由配置信息:{},configInfo); //1.解析配置文件转换为RouteDefinition ListRouteDefinition routeDefinitions JSONUtil.toList(configInfo, RouteDefinition.class); //2.删除旧的路由表 for (String routeId : routeIds) { writer.delete(Mono.just(routeId)).subscribe(); } routeIds.clear(); //3.更新路由表 for (RouteDefinition routeDefinition : routeDefinitions) { //3.1更新路由表 writer.save(Mono.just(routeDefinition)).subscribe(); //3.2记录路由id便于下一次更新时删除 routeIds.add(routeDefinition.getId()); } } }[ { id: item, predicates: [{ name: Path, args: {_genkey_0:/items/**, _genkey_1:/search/**} }], filters: [], uri: lb://item-service }, { id: cart, predicates: [{ name: Path, args: {_genkey_0:/carts/**} }], filters: [], uri: lb://cart-service }, { id: user, predicates: [{ name: Path, args: {_genkey_0:/users/**, _genkey_1:/addresses/**} }], filters: [], uri: lb://user-service }, { id: trade, predicates: [{ name: Path, args: {_genkey_0:/orders/**} }], filters: [], uri: lb://trade-service }, { id: pay, predicates: [{ name: Path, args: {_genkey_0:/pay-orders/**} }], filters: [], uri: lb://pay-service } ]
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做有网被视频网站吗搜索引擎 网站推广 举例

第一章:量子计算镜像兼容性测试概述 在量子计算系统部署与仿真环境中,镜像兼容性测试是确保量子算法在不同硬件架构和软件栈中稳定运行的关键环节。该测试主要验证量子程序编译器、量子模拟器以及真实量子处理器之间对同一量子镜像的解析一致性。兼容性问…

张小明 2025/12/29 3:23:35 网站建设

莱州市规划建设管理局网站怎么查网站的外链

文章来源:123财经导航/大白EA宝库【大白小月编者按】大白访谈录来到了第七期。这一期的嘉宾北京蛙叔,是很多大白群友的“理想镜像”:40岁,定居北京,IT行业技术专家,月入7万(年薪近百万&#xff…

张小明 2025/12/29 3:19:31 网站建设

自建网站 备案wordpress分享插件积分

每天学习一点算法 2025/12/15 题目:环形链表 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使…

张小明 2025/12/29 3:17:29 网站建设

网站制作的关键技术阿里云 wordpress 404

引言 【免费下载链接】GLM-4.6-FP8 GLM-4.6-FP8在GLM-4.5基础上全面升级:上下文窗口扩展至200K tokens,支持更复杂智能体任务;编码性能显著提升,在Claude Code等场景生成更优质前端页面;推理能力增强并支持工具调用&am…

张小明 2025/12/29 3:15:27 网站建设

泊头市网站建设价格docker wordpress fpm

🚨 前言:半夜被报警叫醒的痛 你是否有过这样的经历: 凌晨 3 点,手机疯狂震动。运维群里抛出一张截图:“生产环境炸了,服务 500!” 你揉着惺忪的睡眼,打开电脑,连上 VPN&a…

张小明 2026/1/4 7:54:14 网站建设

如何在电商网站做市场调研深圳软件项目定制开发费用

MSBuild BuildCheck框架深度解析:构建时质量控制的5大核心优势 【免费下载链接】msbuild msbuild: 是 .NET Framework 的构建引擎,用于构建和管理 .NET 项目。适合 .NET 开发者和系统管理员使用 msbuild 构建和管理 .NET 项目。 项目地址: https://git…

张小明 2025/12/29 3:09:23 网站建设