免费网站推广网站在线,建设网站教程2016,南充企业网站建设,网络推广方案找v信hyhyk1做推广好微服务使用到了我们的多模块开发#xff0c;父级工程可以在modules管理子模块 子模块中也会定义父模块 1. Nacos注册中心 Nacos已成为Java微服务生态的事实标准组件#xff0c;在2023年中国Java开发者调研中占比达62%。其优势在于将服务发现与配置管理统一#xff0c;显著降… 微服务使用到了我们的多模块开发父级工程可以在modules管理子模块 子模块中也会定义父模块 1. Nacos注册中心 Nacos已成为Java微服务生态的事实标准组件在2023年中国Java开发者调研中占比达62%。其优势在于将服务发现与配置管理统一显著降低运维复杂度。建议新项目直接采用Nacos 2.0版本性能提升50%对于历史Eureka系统可参考阿里云提供的迁移工具
双重角色 服务注册中心替代Eureka 动态配置中心替代Spring Cloud Config 阿里巴巴开源支持K8s原生服务发现 1.1 启动nacos 打开nacos文件路径下bin目录cmd命令(startup.cmd -m standalone)运行nacos 启动之后通过服务网址(http://localhost:8848/nacos/index.html)进行访问 1.2 将项目注册到Nacos 父工程导入依赖
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion2023.0.1.2/versiontypepom/typescopeimport/scope
/dependency 在子模块添加nacos依赖
!-- nacos核心依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependency 修改子模块的application.yml配置 server:port: 8080
spring:cloud:nacos:server-addr: localhost:8848 # Nacos服务地址包括IP和端口discovery:# Nacos认证信息用于注册与发现服务username: nacospassword: nacosapplication:name: orderservice # 当前应用的服务名称在Nacos中注册使用datasource:url: jdbc:mysql://localhost:3306/cloud-order?useSSLfalseallowPublicKeyRetrievaltrue # 数据库连接URL配置username: root # 数据库登录用户名password: 1234 # 数据库登录密码driver-class-name: com.mysql.cj.jdbc.Driver # JDBC驱动类名mybatis:type-aliases-package: com.itgaohe.user.pojoconfiguration:map-underscore-to-camel-case: true
logging:level:com.itgaohe: debugpattern:dateformat: MM-dd HH:mm:ss:SSS 重启服务查看nacos服务官网就会有服务 2. feign 远程调用 声明式HTTP客户端将REST调用抽象为Java接口调用实现远程调用本地化。 属于Spring Cloud Netflix组件现为OpenFeign 集成点实现方式示例配置负载均衡自动装配Ribbon/LoadBalancerLoadBalanced服务发现对接Nacos/Eurekaspring.cloud.nacos.discovery熔断降级支持Hystrix/Sentinelfeign.circuitbreaker.enabledtrue 这里有一个服务提供者和服务消费者模块想要实现服务生产者调用服务消费者 我们使用多模块开发来实现Feign远程调用案例步骤如下
2.1 创建feign-api导入Feign依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdcloud-demo/artifactIdgroupIdcom.itgaohe/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdfeign-api/artifactIdpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target/propertiesdependencies!--nacos配置管理依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--bootstrap依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactIdversion3.0.3/version/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependencies/project
2.2 feign-api模块 在feign-api下将服务提供者orderserver下的相关包复制到feign-api项目中 feign启动类
package com.itgaohe.feign;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class FeignApplication {public static void main(String[] args) {SpringApplication.run(FeignApplication.class, args);}
}FeignClients 接口层定义接口
package com.itgaohe.feign.clients;import com.itgaohe.feign.pojo.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;/*** Feign客户端接口用于调用用户服务*/
FeignClient(name userservice) // 指定要调用的服务名称
public interface UserClients {/*** 根据用户ID查询用户信息* param id 用户ID* return 返回对应的用户对象*/GetMapping(/{id}) // 定义GET请求映射路径public User queryById(PathVariable(id) Long id); // 通过路径变量传递用户ID}FeignClient注解name跟的一定是要调用的服务名称 2.3 在服务提供者pom文件中引入feign-api依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsdparentartifactIdcloud-demo/artifactIdgroupIdcom.itgaohe/groupIdversion1.0-SNAPSHOT/version/parentmodelVersion4.0.0/modelVersionartifactIdorder-service/artifactIdpropertiesmaven.compiler.source17/maven.compiler.sourcemaven.compiler.target17/maven.compiler.target/propertiesdependenciesdependencygroupIdcom.itgaohe/groupIdartifactIdfeign-api/artifactIdversion1.0-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-openfeign/artifactId/dependency!--nacos配置管理依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--bootstrap依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactIdversion3.0.3/version/dependency!--nacos配置管理依赖--dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-config/artifactId/dependency!--bootstrap依赖--dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-bootstrap/artifactIdversion3.0.3/version/dependency!-- nacos客户端依赖 --dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencydependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-loadbalancer/artifactId/dependencydependencygroupIdcom.itgaohe/groupIdartifactIduser-service/artifactIdversion1.0-SNAPSHOT/version/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactIdversion2.1.4.RELEASE/version/dependencydependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency!--mybatis--dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactId/dependency/dependencies
/project
2.4 在服务消费者启动类添加注解启动Feign服务 这样就可以进行调用了~