首页 文章 精选 留言 我的

精选列表

搜索[数据协作平台],共10000篇文章
优秀的个人博客,低调大师

java B2B2C Springcloud电子商务平台源码 -Feign之源码解析

什么是Feign Feign是受到Retrofit,JAXRS-2.0和WebSocket的影响,它是一个jav的到http客户端绑定的开源项目。 Feign的主要目标是将Java Http 客户端变得简单。 写一个Feign 现在来简单的实现一个Feign客户端,首先通过@FeignClient,客户端,其中value为调用其他服务的名称,FeignConfig.class为FeignClient的配置文件,代码如下: @FeignClient(value = "service-hi",configuration = FeignConfig.class) public interface SchedualServiceHi { @GetMapping(value = "/hi") String sayHiFromClientOne(@RequestParam(value = "name") String name); } 其自定义配置文件如下,当然也可以不写配置文件,用默认的即可: @Configuration public class FeignConfig { @Bean public Retryer feignRetryer() { return new Retryer.Default(100, SECONDS.toMillis(1), 5); } } 查看FeignClient注解的源码,其代码如下: @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface FeignClient { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; @AliasFor("value") String name() default ""; String url() default ""; boolean decode404() default false; Class<?>[] configuration() default {}; Class<?> fallback() default void.class; Class<?> fallbackFactory() default void.class; } String path() default ""; boolean primary() default true; FeignClient注解被@Target(ElementType.TYPE)修饰,表示FeignClient注解的作用目标在接口上; @Retention(RetentionPolicy.RUNTIME),注解会在class字节码文件中存在,在运行时可以通过反射获取到;@Documented表示该注解将被包含在javadoc中。 feign 用于声明具有该接口的REST客户端的接口的注释应该是创建(例如用于自动连接到另一个组件。 如果功能区可用,那将是用于负载平衡后端请求,并且可以配置负载平衡器使用与伪装客户端相同名称(即值)@RibbonClient 。 其中value()和name()一样,是被调用的 service的名称。 url(),直接填写硬编码的url,decode404()即404是否被解码,还是抛异常;configuration(),标明FeignClient的配置类,默认的配置类为FeignClientsConfiguration类,可以覆盖Decoder、Encoder和Contract等信息,进行自定义配置。fallback(),填写熔断器的信息类。 FeignClient的配置 默认的配置类为FeignClientsConfiguration,这个类在spring-cloud-netflix-core的jar包下,打开这个类,可以发现它是一个配置类,注入了很多的相关配置的bean,包括feignRetryer、FeignLoggerFactory、FormattingConversionService等,其中还包括了Decoder、Encoder、Contract,如果这三个bean在没有注入的情况下,会自动注入默认的配置。 Decoder feignDecoder: ResponseEntityDecoder(这是对SpringDecoder的封装) Encoder feignEncoder: SpringEncoder Logger feignLogger: Slf4jLogger Contract feignContract: SpringMvcContract Feign.Builder feignBuilder: HystrixFeign.Builder 代码如下: @Configuration public class FeignClientsConfiguration { ...//省略代码 @Bean @ConditionalOnMissingBean public Decoder feignDecoder() { return new ResponseEntityDecoder(new SpringDecoder(this.messageConverters)); } @Bean @ConditionalOnMissingBean public Encoder feignEncoder() { return new SpringEncoder(this.messageConverters); } @Bean @ConditionalOnMissingBean public Contract feignContract(ConversionService feignConversionService) { return new SpringMvcContract(this.parameterProcessors, feignConversionService); } ...//省略代码 } 重写配置: 你可以重写FeignClientsConfiguration中的bean,从而达到自定义配置的目的,比如FeignClientsConfiguration的默认重试次数为Retryer.NEVER_RETRY,即不重试,那么希望做到重写,写个配置文件,注入feignRetryer的bean,代码如下: @Configuration public class FeignConfig { @Bean public Retryer feignRetryer() { return new Retryer.Default(100, SECONDS.toMillis(1), 5); } } 在上述代码更改了该FeignClient的重试次数,重试间隔为100ms,最大重试时间为1s,重试次数为5次。java B2B2C 多租户电子商城系统

优秀的个人博客,低调大师

java B2B2C springmvc mybatis电子商务平台源码-------zuul网关实现

一、简介 在Springcloud中用zuul来实现网关功能,客户端的请求首先经过负载均衡Ngnix,再到达服务网关(zuul集群),然后再到具体的服务。Zuul的主要功能是路由转发和过滤器。路由功能是微服务的一部分,比如/api/server1转发到到server1服务。zuul默认和Ribbon结合实现了负载均衡的功能。愿意了解源码的朋友直接求求交流分享技术:二一四七七七五六三三 二、搭建 首先是POM文件 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zuul</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> 然后在applicaton类加上注解@EnableZuulProxy,开启zuul的功能 @SpringBootApplication @EnableZuulProxy @EnableEurekaClient @RefreshScope public class HfzZuulApplication { public static void main(String[] args) { SpringApplication.run(HfzZuulApplication.class, args); } } yml配置如下 eureka: client: serviceUrl: defaultZone: http://name:pass@IP/eureka/ instance: ip-address: Ip地址 prefer-ip-address: true server: port: 8769 spring: application: name: service-zuul sleuth: sampler: percentage: 1.0 cloud: config: discovery: enabled: true service-id: CONFIG-SERVER label: master profile: dev name: hfz-zuul username: name password: pass 以上是在项目中配置的,为了使项目更加灵活,所以将路由的配置放在github上,这样可以动态读取 zuul: routes: api-a: path: /api-a/** serviceId: service-ribbon api-b: path: /api-b/** serviceId: service-feign 以/api-a/ 开头的请求都转发给service-ribbon服务;以/api-b/开头的请求都转发给service-feign服务; 三、服务过滤 zuul不仅可以路由,并且还能通过过滤来拦截一些服务,可以用来做安全验证。 public class MyFilter extends ZuulFilter{ private static Logger log = LoggerFactory.getLogger(MyFilter.class); @Override public String filterType() { return "pre"; } @Override public int filterOrder() { return 0; } @Override public boolean shouldFilter() { return true; } @Override public Object run() { RequestContext ctx = RequestContext.getCurrentContext(); HttpServletRequest request = ctx.getRequest(); log.info(String.format("%s >>> %s", request.getMethod(), request.getRequestURL().toString())); Object accessToken = request.getParameter("token"); if(accessToken == null) { log.warn("token is empty"); ctx.setSendZuulResponse(false); ctx.setResponseStatusCode(401); try { ctx.getResponse().getWriter().write("token is empty"); }catch (Exception e){} return null; } log.info("ok"); return null; } } filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过滤器类型,具体如下:pre:路由之前routing:路由之时post: 路由之后error:发送错误调用filterOrder:过滤的顺序shouldFilter:逻辑判断,是否要过滤run:过滤器的具体逻辑控制接下来就可以测试访问了。 技术架构图如下:资料和源码来源

优秀的个人博客,低调大师

【干货分享】可能是东半球最全的.NET Core跨平台微服务学习资源

如果你发现还有西半球的资源,烦请相告,不胜感谢! 一、Asp.net Core基础 微软英文官网 .NET Core 微软中文官网 GitHub 用ASP.NET内核和Azure构建现代Web应用程序 博客园翻译文档 MSDN .NET Core开源峰会 https://dotnet.github.io/ Artech博客 张飞洪博客 Ants博客 张善友博客(微软MVP) 码农一生博客 edison zhou博客 Catcher Wong博客 Ken.W博客 Savorboard(微软MVP) http://www.csharpkit.com .NET Core Util .NET Core Community GitHub组织 二、Linux geffzhang starof博客 鸟哥的私房菜 鸟哥私房菜繁体版 三、容器化Docker 可能是把Docker的概念讲的最清楚的一篇文章 docker英文社区 docker中文社区 docker中文文档 docker中文文档 YAML语法介绍 K8S中文社区 K8S英文社区 portainer 通过ui管理docker sparkdev个人博客 微软家的Docker博客 docker官方博客 四、微服务 注册中心 API网关Ocelot官网一个英国人发起的项目 Ocelot在GitHub 服务发现、配置管理(类似ZooKeeper) Consul spring cloud.io spring cloud.github 服务架构 OAuth2和JWT 来源简书 surging分布式微服务框架 理解OAuth 2.0阮一峰必读 Tarsnet:基于tars协议的高性能RPC开发框架 微软官方开源微服务框架eShopOnContainers service-fabric微软开源微服务框架 IdentityServer4 IdentityServer4源码 纯OAuth2授权码模式的实现 理解OAuth 2.0 NanoFabric张上友个人开源框架 IdentityServerIdentityServer4.Contrib.RedisStore 微软分布式云计算框架Orleans Orleans can use Ocelot Api Gateway 服务监控 skywalking:可用于生产的APM监控方案(Application Performance Management) Apache SkyWalking 为.NET Core带来开箱即用的分布式追踪和应用性能监控 微服务APM App MetricsExceptionless Polly 服务治理和其他 服务熔断 Rebus is a free .NET “service bus” 基于gRPC的HTTP / 2 RPC Streaming Framework for .NET,.NET Core和Unity .NET API client for vault 使用vault密钥保管库配置提供程序 Additional configuration providers to use with ASP.NET Core Quartz Enterprise Scheduler .NET Apollo(阿波罗)是携程框架部门研发的分布式配置中心 使用Audit.NET,您可以生成有关正在执行的操作的跟踪信息 分布式、高性能、事件溯源、事件驱动、最终一致性框架 基于Dotnet Core设计的可运行在linux和windows下的服务通讯组件 书籍 .NET微服务 微软开发部门出品

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册