当前位置: 首页 > wzjs >正文

网站建设收费分几次如何做二级域名网站

网站建设收费分几次,如何做二级域名网站,专业网站制作服务,芯片设计公司OpenFeign 详解&#xff1a;安装配置、客户端负载均衡、声明式调用原理及代码示例 1. OpenFeign 安装与配置 (1) 依赖管理 <!-- pom.xml 添加以下依赖 --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud…

OpenFeign 详解:安装配置、客户端负载均衡、声明式调用原理及代码示例

在这里插入图片描述


1. OpenFeign 安装与配置

(1) 依赖管理
<!-- pom.xml 添加以下依赖 -->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
(2) 启用Feign客户端

在Spring Boot主类或配置类上添加@EnableFeignClients注解:

@SpringBootApplication
@EnableFeignClients
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

2. 客户端负载均衡配置

(1) 集成Spring Cloud LoadBalancer

OpenFeign默认通过Spring Cloud LoadBalancer实现客户端负载均衡,无需额外配置。
配置示例(如需自定义策略):

# application.yml
spring:cloud:loadbalancer:ribbon:enabled: false  # 禁用旧版Ribbon,使用新LoadBalancer
(2) 自定义负载均衡策略(可选)
@Configuration
public class LoadBalancerConfig {@Beanpublic IRule customRule() {return new WeightedResponseTimeRule(); // 加权响应时间策略}
}

3. OpenFeign 声明式调用原理

核心流程
  1. 接口定义:通过@FeignClient注解定义服务接口。
  2. 注解标注:用@GetMapping@PostMapping等标注HTTP方法和路径。
  3. 动态代理:Feign生成代理类,自动选择服务实例并发送请求。
  4. 负载均衡:通过Spring Cloud LoadBalancer选择目标实例。

4. 完整代码示例

(1) 定义Feign客户端接口
// 1. 定义接口并标注服务名称
@FeignClient(name = "user-service", fallbackFactory = UserClientFallbackFactory.class) // 异常处理
public interface UserClient {@GetMapping("/users/{id}")User getUserById(@PathVariable("id") String userId);@PostMapping("/users")User createUser(@RequestBody User user);@GetMapping("/users")List<User> getAllUsers();
}
(2) 异常处理FallbackFactory
@Component
public class UserClientFallbackFactory implements FallbackFactory<UserClient> {@Overridepublic UserClient create(Throwable cause) {return new UserClient() {@Overridepublic User getUserById(String userId) {return new User("Fallback", "N/A");}@Overridepublic User createUser(User user) {throw new RuntimeException("Service unavailable");}@Overridepublic List<User> getAllUsers() {return Collections.emptyList();}};}
}
(3) 使用Feign客户端
@RestController
public class UserController {@Autowiredprivate UserClient userClient;@GetMapping("/call-user/{id}")public User callUserService(@PathVariable String id) {return userClient.getUserById(id);}@PostMapping("/create-user")public User createUser(@RequestBody User user) {return userClient.createUser(user);}
}
(4) 配置文件(application.yml)
spring:application:name: order-servicecloud:nacos:discovery:server-addr: 127.0.0.1:8848  # 注册中心地址

5. 关键配置说明

配置项说明示例
@FeignClient(name = "...")指定目标服务名称(需与注册中心一致)name = "user-service"
url指定服务地址(覆盖注册中心配置,用于测试单机模式)url = "http://localhost:8080"
fallback / fallbackFactory指定降级逻辑类(fallback需无参构造,fallbackFactory更灵活)fallbackFactory = ...
decode404将HTTP 404响应视为成功(默认返回nulldecode404 = true

6. 原理与机制

(1) 动态代理生成
  • 步骤
    1. Feign根据接口定义生成UserClient的代理类。
    2. 代理类通过Spring Cloud LoadBalancer获取目标服务实例地址。
    3. 发送HTTP请求并处理响应。
(2) 负载均衡流程
  1. 服务发现:从注册中心(如Nacos)获取user-service的实例列表。
  2. 选择实例:根据策略(如轮询)选择一个健康实例。
  3. 发送请求:通过HTTP客户端(如HttpClient)发送请求。

7. 总结对比表格

维度OpenFeignSpring RestTemplate
开发模式声明式:通过接口定义方法,减少样板代码。模板式:手动构建请求,代码侵入性高。
客户端负载均衡内置支持(需集成LoadBalancer),自动选择实例。需手动实现或集成Ribbon。
异常处理支持Fallback机制,可全局或局部定义降级逻辑。需手动捕获异常并处理。
依赖管理spring-cloud-starter-openfeign依赖。仅需spring-web依赖。
适用场景Spring Cloud生态中快速开发,需声明式调用与熔断集成。非Spring Cloud项目,或需精细控制请求细节(如自定义拦截器)。
代码简洁性高(声明式接口)低(需手动处理请求参数、头信息等)

8. 选择建议

  • 选 OpenFeign

    • 已使用Spring Cloud生态(如Spring Boot + Nacos/Eureka)。
    • 追求开发效率,减少样板代码。
    • 需要开箱即用的负载均衡与熔断支持。
  • 选 RestTemplate

    • 非Spring Cloud项目。
    • 需要高度控制请求细节(如自定义拦截器、多协议支持)。

9. 注意事项

  1. 依赖版本:确保Spring Cloud和Feign版本兼容(如Spring Cloud 2022.0.x需spring-cloud-starter-openfeign 4.x)。
  2. 日志监控:通过feign.Logger启用请求日志(logging.level.com.example=DEBUG)。
  3. 性能优化:避免频繁创建Feign客户端实例,依赖注入即可。
  4. 超时配置:在application.yml中设置全局超时:
    feign:client:config:default:connectTimeout: 5000  # 连接超时readTimeout: 10000    # 读取超时
    

通过以上配置和代码示例,可快速实现声明式服务调用与客户端负载均衡。

http://www.dtcms.com/wzjs/595216.html

相关文章:

  • iis网站怎么做域名绑定上海软件开发工程师工资一般多少
  • 襄阳网站制作网站制作哪家便宜
  • 字形分析网站优化seo搜索
  • 做律师咨询网站网站的程序和数据库怎么做的
  • 西安直播网站开发益阳市赫山区建设局网站
  • 潜江做网站佛山做网站
  • 学校网站开发毕业设计公众号网站
  • 一级a做爰片免费网站破解版企业如何建设免费网站
  • 建设网站的公司哪个济南兴田德润怎么联系成都旅游路线规划
  • 网站推广方案怎么写商铺设计
  • 做美妆网站的关键词做网页的
  • 站外推广平台有哪些青岛建站合作
  • 网站建设对企业带来什么作用如何做网站推广方式
  • 为什么大网站的百度快照更新速度慢还排第一wordpress导航栏字体
  • 论文中小企业的网站建设网站服务器建设的三种方法是什么
  • vs2017做网站网站建设ftp软件
  • 韩国flash网站广州一起做网店网站
  • 重庆做网站开发的公司怎么学习网站开发
  • 惠州专业做网站成都网站建设 平易云
  • 站长统计网站大全青岛网站建设¥青岛博采网络
  • 网奇e游通旅游网站品牌策划方案模板
  • 做网站的开发环境贵州互联网公司
  • 共享备案网站下列哪个软件属于网页制作软件
  • 瓷器网站源码wordpress主题图片路径换取l
  • 做网站运营的简历大型多媒体网站建设工具
  • ftp两个网站子域名的绑定个人可以自己做网站吗
  • 网站建设相对路径自助建站网站
  • 音乐网站开发需求网络引流怎么做啊?
  • 做外汇消息面的网站网站怎么做推广和宣传语
  • 代做毕业设计网站有哪些广告在线制作图片