网站开发工程师社交,人才网站开发,怎样做淘宝的导购网站,wordpress系统版1.Fegin调用只有在微服务之间才会使用#xff0c;以前的单体项目用不到#xff0c;因为单体项目不会涉及到分库的概念#xff0c;并且单体项目就一个应用#xff0c;想用的功能都可以直接方法调用#xff0c;但是微服务就不行#xff0c;跨服务的调用只能通过http的操作以前的单体项目用不到因为单体项目不会涉及到分库的概念并且单体项目就一个应用想用的功能都可以直接方法调用但是微服务就不行跨服务的调用只能通过http的操作这很像以前的单体项目不同产品之间的调用或者前端与后端的调用。Fegin调用的实质还是http的调用。现在微服务之间调用如果还是写以前的http://ip:端口/访问路径代码实现起来就会很麻烦所以出现了Feign底层做了HTTP的集成让开发者省略了这其中的麻烦开发更便捷
2.Feign使用少不了依赖同时基于实际应用中一个应用会部署多台服务所以引入fegin依赖的同时也要引入负载均衡的依赖这个可以在自己机器上修改服务端口启动两个同应用服务玩一下
依赖如下 !--openFeign-- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-openfeign/artifactId /dependency !--负载均衡器-- dependency groupIdorg.springframework.cloud/groupId artifactIdspring-cloud-starter-loadbalancer/artifactId /dependency
3.对于Fegin的使用个人理解在微服务中可以单独抽取一个公共api模块单独放置所有的Fegin这样的话整体工程看起来会更明确更有具体指向性。我们其它服务只需要去引入这个模块就可以引用到岂不是很方便。
4.Fegin接口的写法feign既然是微服务之间的http调用那么就像我们对外提供业务接口类似。在实际业务开发中对外提供接口调用方就要通过网关访问我们Controller层的RequestMapping(/**)PostMapping(/**)才可以访问到我们的服务。所以feign也是这个逻辑我们在写fegin接口的时候也是采取这个原则。Fegin接口调用的时候我们一定要明确调用的是哪个服务代码案例如下
FeignClient(value ***-service) public interface I***Client { DeleteMapping(/**) //这一列的方法和controller层调用的是一致的不然怎么调用呢 void deleteCartItemByIds(RequestParam(ids) CollectionLong Ids);
}
5.Feign的使用启动类是必须要添加注解使用的EnableFeignClients(basePackages com.***.client )但是这个注解加在哪个服务启动类上呢原则是那个应用调用Fegin哪个服务启动类加。
6.Fegin调用的时候是耗费资源的就像每次发起http连接都是要进行sorcat链接一样或者说像我们连接数据库每次都建立连接都耗费资源所以有数据库连接池。同样fegin也有链接池且fegin的连接池很件到只要在服务中引入依赖配置文件假如配置就完成了示例如下
依赖!--OK http 的依赖 -- dependency groupIdio.github.openfeign/groupId artifactIdfeign-okhttp/artifactId /dependency
配置
feign: okhttp: enabled: true # 开启OKHttp功能
6.Fegin使用的时候在实际应用中尤其是服务联调或者查询bug时会像看下请求报文或者响应报文什么的这个时候就需要有日志我觉得可以用切面拦截的方式实现这样可以控制全局的feign都打印日志出来这个百度一大堆随便抄一个就可以了。还有一种配置类的方式可以实现fegin的日志级别这个涉及到局部生效和全局生效的一个区别全局生效的方式有点类似于切面拦截方式这种方式就是在启动类上添加注解
全局生效操作在启动类的注入
EnableFeignClients(defaultConfiguration DefaultFeignConfig.class)
局部生效只操作在当前的FeginClient
FeignClient(value item-service, configuration DefaultFeignConfig.class)
配置类这个类做为Bean被spring容器自动装配
public class DefaultFeignConfig { Bean public Logger.Level feignLogLevel(){ return Logger.Level.FULL; //日志级别 } }
7.Fegin日志的级别
OpenFeign只会在FeignClient所在包的日志级别为DEBUG时才会输出日志。而且其日志级别有4级 - NONE不记录任何日志信息这是默认值。 - BASIC仅记录请求的方法URL以及响应状态码和执行时间 - HEADERS在BASIC的基础上额外记录了请求和响应的头信息 - FULL记录所有请求和响应的明细包括头信息、请求体、元数据。 Feign默认的日志级别就是NONE所以默认我们看不到请求日志。