Spring Cloud相关配置管理

Spring Cloud Config整合Spring Cloud Kubernetes,在k8s上管理配置 1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Kubernetes有专门的ConfigMap和Secret来管理配置,但它也有一些局限性,所以还是希望通过Spring Cloud Config来管理。在Kubernetes上面的微服务系统会有所不同,我们来探索一下如何整合Spring Cloud Kubernetes来做配置管理。 整体方案与《使用Spring Cloud Config统一管理配置,别再到处放配置文件了》差不多,只是引入Spring Cloud Kubern 阅读详情

      Spring Cloud是基于Spring Boot之上主要用于分布式架构。对于分布式架构提供了很多管理配置   例如:服务注册与发现(Eureka)、消费者(Ribbon and Feign)、断路器(Hystrix)、路由网关(Zuul)、分布式配置中心(Config)以及高可用的服务注册中心。对于Dubbo+Zookeeper分布式架构要简单很多。下面介绍下各配置的相关内容:

一、注册中心(Eureka Server and Client):

         前面提到eureka是spring boot的注册中心,server client客户端把每个服务都注册eureka server的配置文件中,eureka server接收客户端转递的IP和端口进行注册。Eureka client每30秒向Eureka server发送心跳进行续约,如果超过90秒说明该服务不进行续约就会从注册中心扣除(shutdown)。Eureka Client在启动注册的时候系统默认需要40秒的时间来进行注册。

        代码示例 eg:

        Eureka Server配置:

        1、需要在pom.xml文件增加eureka server依赖:

      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>

         2、在配置文件中application.yml中增加服务地址:

                registerWithEureka和fetchRegistry两个参数表示false表示这是一个服务注册,如果没有声明表示是一个客户端。

#服务端端口
server:
 port: 8761

#配置服务端口URL路径 共客户端使用
eureka:
  instance:
   hostname: localhost
  client:
   registerWithEureka: false
   fetchRegistry: false  
   serviceUrl:
     defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

       3、在主程序类中增加注释@EnableEurekaServer注释:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServerApplication.class, args);
	}

}

Eureka Client配置 :

        1、新建一个spring boot项目然后一样加入eureka server依赖如上。

        2、在客户端配置文件中加入端口和Url:

下面eureka.client参数没有registerWithEureka和fetchRegistry两个参数说明这是配置的一个客户端,其中增加了defaultZone默认地址指向的就是注册中心Eureka Server的地址。

#1客户端端口    
server:
  port: 8763

#客户端配置
eureka:
  instance:
    hostname: localhost #声明
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8761/eureka/ #这里就是服务端暴露的地址

#应用程序名字用于调用
spring:
  application:
    name: eureka-client #项目名称(无论多少客户端多少个 名称要保持一样,例如 project2项目的properties 也是这个名称只是端口不一样)

        3、在主程序类中增加@EnableEurekaEclient客户端声明:

@EnableEurekaClient 	//eureka客户端声明
@SpringBootApplication
@RestController			//页面返回内容
public class EurekaClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaClientApplication.class, args);
	}
	
	@Value("${server.port}")	//得到服务端端口 8762
	String port;
	@RequestMapping("/hi")		//访问路径
	public String home(@RequestParam String name) {
		return "hi "+name+",i am from port:" +port;
	}

}

配置多个客户端只需要提供指向注册中心的url地址及可,以上就是Eureka Server和Eureka Client的简单配置。

 二、服务消费者 (Rest + Ribbon  Or  Feign)

    Spring Cloud提供两种服务调用的方式一种是rest+ribbon,另一种feign,在微服务中服务与服务之间是相对独立的基于http restul协议  (http restuls:基于Web应用,客户端将消息封装成一个包给服务器,服务器进行解析然后将消息返回给客户端) 。

     Ribbon是一个负载均衡客户端(负载均衡: 当大量服务访问同一个应用,会产生并发和死锁等情况,ribbon会根据当前服务器良好的节点进行相应的服务进行响应)。

      基于服务消费(rest + ribbon)   Code eg:

     1、新建一个spring cloud项目增加ribbon依赖:

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>

    2、在配置文件如下:

#3客户端端口    
server:
  port: 8764

#客户端配置
eureka:
  instance:
    hostname: localhost
  client:
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:8761/eureka/

#应用程序名字用于调用
spring:
  application:
    name: service-ribbon

     3、主程序配置类:

      @EnableHystrix是后面的熔断处理加上去也可以,如果要用需要加下依赖:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>


@EnableDiscoveryClient //向服务中心注册(用于消费)
@EnableEurekaClient
@SpringBootApplication
@EnableHystrix		   //开启断路功能
public class EurekaServiceRibbonApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServiceRibbonApplication.class, args);
	}

	@Bean			//声明一个Bean
	@LoadBalanced	//设置负载均衡的功能
	RestTemplate restTemplate() {
		return new RestTemplate();
	}
}

       其中@LoadBalanced 就表示设置了一个负载均衡的功能。

     4、增加一个Service

@Service
public class HelloService {
	
	@Autowired
    RestTemplate restTemplate;

	@HystrixCommand(fallbackMethod="error")	//能过HystrixCommand实现熔断,当方法出现错误返回一个回调
    public String hiService(String name) {
        return restTemplate.getForObject("http://EUREKA-CLIENT/hi?name="+name,String.class);
    }
    
	public String error(String name) {
		return "Request "+name+" is Dad error!!";
	}
    

}

        其中引用一个restTemplate模版然后调用.getForObject方法,参数是对哪一个url进行负载均衡,EUREKA-CLIENT是之前两个客户端的应用程序名称。

      5、再增加一个control类:

@RestController
public class Control {

    @Autowired
    HelloService helloService;
    
    @RequestMapping(value = "/hi")
    public String hi(@RequestParam String name){
        return helloService.hiService(name);
    }

}

运行Eureka server ->Eureka Client 1 --->Eureka Client  2 --->Eureka-Service-Ribbon 运行http://localhost:8764/hi?name=miku

就会显示

hi miku,i am from port:8762

再次刷新会出现

hi miku,i am from port:8763

可以看到会出现两个不同的端口,这就是实现了负载均衡,访问不同web端不同的服务。此时结构如下:

Service-hi 8762、Service-hi 8763、Service-ribbon 8764都向Eureka Server注册了服务  ribbon项目使用restTemplate开启了负载均衡通过ribbon指向两个客户端相同的方法(hi方法)加载。达到两个不同的客户端访问。

 

基于服务消费(Feign)   Code eg:

        Feign是一个声明式的伪Http客户端,使用Feign直接在接口在增加注解,它具有可插拔的注解特性,可使用Feign 注解和JAX-RS注解。feign默认集成了ribbon。

  1、新建一个工程service-feign增加以下依赖:

 <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>

   2、在配置文件增加如下:

server:
  port: 8765

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
      
spring:
  application:
    name: service-feign
    
#在Fegin中开记路由断路功能
feign:
  hystrix:
   enabled: true

3、主程序增加如下注解:

@SpringBootApplication
@EnableDiscoveryClient
@EnableEurekaClient
@EnableFeignClients
public class SericeFeignApplication {

	public static void main(String[] args) {
		SpringApplication.run(SericeFeignApplication.class, args);
	}

}

4、增加一个接口:

@FeignClient(value =("EUREKA-CLIENT"),fallback = SchedualServiceHiHystric.class)
public interface SchedualServiceHi {
	
	@RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

以上代码中通过@FeignClient注解两个参数 value指明哪个客户端的应用程序明,fallback如果出现错误调用哪个类。然后通过sayHiFromClientOne指明哪个url参数访问。这样就开启了负载均衡。

5、增加一个control进行转路:

@RestController
public class HiController {

    @Autowired
    SchedualServiceHi schedualServiceHi;

    @GetMapping(value = "/hi")
    public String sayHi(@RequestParam String name) {
        return schedualServiceHi.sayHiFromClientOne( name );
    }
}

6、增加一个断路处理的类:

@Component
public class SchedualServiceHiHystric implements SchedualServiceHi {

	@Override
	public String sayHiFromClientOne(String name) {
		// TODO Auto-generated method stub
		return "sorry "+name;
	}

}

运行Eureka server ->Eureka Client 1 --->Eureka Client  2 --->Service-Feign运行http://localhost:8764/hi?name=miku

刷新 页面同样也会显示两个不同的端口进行访问。

比较两种不同的消费服务rest+ribbon通过一个Bean  调用 testTemplate 类  使用@LoadBalanced注解,而Feign则是通过在接口上进行用@FeignClient声明来开启负载均衡。

 

三、断路器(Hystrix)

        在微服务架构中服务与服务之间可以进行相互调用,Spring Could项目通过restTemplate+ribbon和Feign进行服用调用 ,在容量的请求数据当中,我们并不能保证每个服务都可能100%调用,对某个请求可能需要大量的访问,很有可能消耗selevt容器大量的资源直到崩溃,为此spring cloud架构中提出了断路器Hystrix处理,在某方法遇到发生错误的时候可以返回一个处理。底层的服务中如果出现故障,会导致连锁故障,当对特定的服务达到一个阀值(5秒20次)断路器将会把打开,调用一个错误处理方法fallback。

       基于ribbon实现断路器  Code eg:

       1、在前面的Ribbon工程增加Hystrix依赖:

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        </dependency>

 

       2、在主程序中增加@EnableHystrix注释开启断路器功能

@EnableDiscoveryClient //向服务中心注册(用于消费)
@EnableEurekaClient
@SpringBootApplication
@EnableHystrix		   //开启断路功能
public class EurekaServiceRibbonApplication {

	public static void main(String[] args) {
		SpringApplication.run(EurekaServiceRibbonApplication.class, args);
	}

	@Bean			//声明一个Bean
	@LoadBalanced	//设置负载均衡的功能
	RestTemplate restTemplate() {
		return new RestTemplate();
	}
}

        3、在前面的工程server当中看到如下:

@Service
public class HelloService {
	
	@Autowired
    RestTemplate restTemplate;

	@HystrixCommand(fallbackMethod="error")	//能过HystrixCommand实现熔断,当方法出现错误返回一个回调
    public String hiService(String name) {
        return restTemplate.getForObject("http://EUREKA-CLIENT/hi?name="+name,String.class);
    }
    
	public String error(String name) {
		return "Request "+name+" is Dad error!!";
	}
}

代码中hiServevic方法通过@HystrixCommand注解声明一个断路器,通过参数fallbackMethod指定一个方法名称进行处理,应该方法如果在请求中方法停止了或者关闭就会跳转该方法返回一个固定值进行反馈。

       2、在Feign中增加断路器 Code eg:

      在前面的Servce-Feign工程看到如下:

@FeignClient(value =("EUREKA-CLIENT"),fallback = SchedualServiceHiHystric.class)
public interface SchedualServiceHi {
	
	@RequestMapping(value = "/hi",method = RequestMethod.GET)
    String sayHiFromClientOne(@RequestParam(value = "name") String name);
}

在Serivce中声明了接口SchedualServiceHi 并使用@FeignClient注释两个参数 第一个参数指明客户端的程序名称,第二数是断路器的回调方法,该参数指向一个SchedualServiceHiHystric类,该类如下:

@Component
public class SchedualServiceHiHystric implements SchedualServiceHi {

	@Override	
	public String sayHiFromClientOne(String name) {
		// TODO Auto-generated method stub
		return "sorry "+name;
	}

}

应该实现了SchedualServiceHi接口并使用了sayHiFromClientOne方法同样也是返回一个固定值进行反馈。

两者区别ribbon是基于方法上而feign是基于类,两者调用形式不同。如何测试同样运行Eureka Server->Eureka Client->Eureka-ribbon 启用服务,通过url:http://localhost:8765?name=miku运行  可以正常显示端口和名字,现在停止Eureka Client,再次访问url可以看见我们使用的错误信息。

 

四、智能路由(Zuul)

        在spring could架构中要客户端发送请求,先经过负载均衡(ribbon ->loadbance   or feigin->feignClient)、然后到路由zuul、再到服务器集群Eureka Client----->Eureka Server,所用的配置文件都集成在服务管理。路由器的主要功能是路由转发和过滤器。

基于Ribbon实现Zuul    Code eg:

     1、新建工程service-zuul在配置文件pom.xml增加如下依赖:

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>

    2、在配置文件applcation中增加如下:

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/
server:
  port: 8766
spring:
  application:
    name: service-zuul


#路由网关配置(通过请求路径转发到不同的服务)
zuul:
  routes:
    api-a:
      path: /api-a/**
      serviceId: service-ribbon
    api-b:
      path: /api-b/**
      serviceId: service-feign
    

其上通过zuul.routes.api-a ....参数指定两个不同的Eureka Client工程,path请求转以的路径,serviceId指向的就是工程名称。

       3、在主程序中增加:

@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableZuulProxy						//开启路由网关功能
public class ServiceZuulApplication {

	public static void main(String[] args) {
		SpringApplication.run(ServiceZuulApplication.class, args);
	}

}

通过@EnableZuulProxy开启路由功能。

        4、增加一个路由处理过滤理:


@Component
public class MyFilter extends ZuulFilter {
	
	private static Logger log = LoggerFactory.getLogger(MyFilter.class);
	
	@Override
	public boolean shouldFilter() {
		// TODO Auto-generated method stub
		return true;
	}

	@Override
	public Object run() throws ZuulException {
		// TODO Auto-generated method stub
		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;
	}

	@Override
	public String filterType() {
		// TODO Auto-generated method stub
		return "pre";	//参数中四种类型pre,routing,post,error错误调用
	}

	@Override
	public int filterOrder() {
		// TODO Auto-generated method stub
		return 0;
	}

}

该类继承了一个路由过滤器ZuulFilter类,提供了几个方法:

filterTye方法指定一个字符串的返回类型,提供了几个参数:

     pre:路由之前

    routiong:路由之时

    post:路由之后

    error:发送错误调用

filterOrder方法:过滤的顺序

shouldfilter:逻辑判断,是否要过滤,本文true,永远过滤。

run:对请求的逻辑处理

在run方法通过判断是否带有参数token如果为空,则返回错误提示信息,如果包含则通过路由到服务中心。

 

访问:http://localhost:8766/api-a/hi?name=forezp ;网页显示:

token is empty
访问 http://localhost:8766/api-a/hi?name=miku&token=22 ;
网页显示:

hi miku,i am from port:8762

以上就是通过在配置文件中指定需要路由转发的Eureka Client服务,然后继承一个Zuulfilter过滤器,在实现方法通过run方法指定对请求的url进行不同的处理,来控制路由的转发,通过路由器可以进行一些访问的安全控制。

 

五、分布式配置中心(Spring Cloud Config)

       在一个大项目中有多的配置文件还有一些测试环境test,正式环境pe,本地仓库,远程仓库如对一个文件需要进行频繁的修改难以对文件有效的管理,spring cloud提供了config配置中心服务专门对配置文件进行有效果的管理,当Eureka Servers注册的时候Config Server就加载配置文件地址通过负载均衡发送到server服务。

 Spring Cloud Config  Code eg:

1、新建spring boot 工程名为config-server增加如下依赖:

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>

2、配置文件application.yml上,指定服务端口为8889,加上作为服务注册中心的基本配置

spring.application.name=config-server
server.port=8888

#spring.cloud.config.server.git.uri=https://github.com/forezp/SpringcloudConfig/
spring.cloud.config.server.git.uri=https://github.com/lookloop21/Spring-Boot-Rersource
spring.cloud.config.server.git.searchPaths=
spring.cloud.config.label=master
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

3、在主程序增加如下:

@SpringBootApplication
@EnableConfigServer
@EnableDiscoveryClient
@EnableEurekaClient
public class ConfigServerApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConfigServerApplication.class, args);
	}

}

4、在增加工程config-client 加入以下依赖:

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-config</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>

5、在配置文件增加如下代码:

spring.application.name=config-client
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri= http://localhost:8888/

eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=config-server
server.port=8882

其中通过serviceId指向config-server工程

6、在主程序增加如下代码:


@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@RestController
@RefreshScope
public class ConfigClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConfigClientApplication.class, args);
	}


	@Value("${foo}")
	String foo;

	@RequestMapping(value = "/hi")
	public String hi(){
		return foo;
	}
}

其中@RefreshScope指定文件可以动态修改,不需要停止服务再启动。

访问http://localhost:8882/hi,浏览器显示:

foo version 6666 for miku

 以上是通过git远程仓库实现配置访问,在config-server中配置文件指定远程仓库的配置文件url、账号、密码等相关信息,config-client配置文件中读取config-server 仓库配置文件的相关信息。通过spring cloud config配置中心可以对远程或者本地文件进行有效的管理。

 

总结:以上就Spring Cloud对项目管理提供的一些服务和支持还有很多包括消息总线,断路器监控等,文中主要对Eureka Server--Client服务注册与发现、消费服务Ribbon  + Feign、断路器Hystrix、路由网关Zuul、文件配置中心Config  Server-Clients进行了简单说明。以上就是开发过程常用到的基础服务。更多的服务需要读者查看相应的文档,不足之处下方留言。

代码地址:https://github.com/lookloop21/Spring-Boot-Rersource   spring-could-code.zip文件

20、Spring Cloud 微服务开发与配置管理 本文详细介绍了基于Spring Cloud的微服务开发与配置管理,涵盖了服务注册与发现(Eureka)、集中式配置管理(Spring Cloud Config)、客户端负载均衡(Ribbon)、API网关(Zuul)、分布式跟踪(Zipkin)以及通过Spring Cloud Bus实现的配置自动刷新。文章通过具体的代码示例和组件配置,展示了如何构建一个完整的微服务架构,并有效应对微服务开发中的常见问题。 阅读详情

相关推荐

概述DeepLab系列(deeplab v1, deeplab v2, deeplab v3, deeplab v3+)

前言:图像分割是指像素级别的图像识别,即标注出图像中每个像素所属的对象类别。 语义分割更注重类别之间的区分,而实例分割更注重个体之间的区别。 DeepLab是由Google团队提出的一系列图像分割算法。 DeepLab v1 (2014年) Paper (ICLR 2015) Code 创新点: 空洞卷积(Atrous Conv); <解决编码过程中信号不断被下采样,细节丢失的问题> 全连接条件随机场(Fully-connected Conditional Random Field)。

ZSH12345678900的博客 5529

springcloud

springcloud springcloud eureka Eureka 介绍 Eureka主要由两个组件组成:Eureka服务器和Eureka客户端。 Eureka服务器用作服务注册服务器。 Eureka客户端是一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供服务的故障切换支持。 demo pom文件 <dependency> <groupId>org.springframework.cloud</groupId> <artifactI

qq_41265377的博客 802

win x64下安装oracle 12c出现[INS-30131]报错的解决方案

问题:  win x64下安装oracle 12c出现[INS-30131]报错的解决方案 安装oracle11g碰到“无法访问临时位置”的问题,详细信息如下: INS-30131] 执行安装程序验证所需的初始设置失败。 原因 - 无法访问临时位置。   操作 - 请确保当前用户具有访问临时位置所需的权限。   附加信息:  - 所有节点上的框架设置检查都失败  

一条道走到黑的GISer 1348

springCloud注册中心之Eureka配置详解

Eureka Client配置 eureka.client.service-url 指定eureka服务端的注册地址 (Eureka Server的分区地址) 这个是客户端使用的,告诉客户端服务的地址(让其知道去哪注册啊) eureka.client.service-url 是个map,可以指定多个,有个默认的defaultZone eureka.client.service-url.d...

zhuhaoyu6666的博客 5916

《统计学习方法》——李航 学习大纲

最近在学习李航写的统计学习方法概论, 每一章都用xmind理清了思路,括号里是书里的公式,第一次写博文,敬请指教~~~~ 第一章 统计学习方法论 第二章 感知机 每个方法其实只需要着重掌握三要素和输入输出就可以了,主要看模型、策略和算法。 感知机主要是二类分类的线性分类模型。 看到后面会注意感知机和支持向量机的区别。 第三章 k近

wjy619251334的博客 1万+

基于mediapipe的动作捕捉和unity的人物模型驱动

用到的人体关键点检测的算法是Google开发的基于深度学习的实时多媒体套件,汇集了人体、手部、人脸关键点追踪、物体检测、物体识别等多个流行的视觉任务的成果。整套 Mediapipe正如其名字,专门为便携设备上的多媒体应用设计,模型非常小,在笔记本手机上也能实时跑,跨平台、跨语言。mediapipe实时性是没什么问题。但是是以牺牲了质量为代价的,这种关键点检测一般是用来做动作识别,类似于运动app跳绳计数、判定瑜伽动作标不标准这种。用单目视觉来做人物模型的驱动,总差点意思。

qq_58484580的博客 5727

eureka搭建踩过的坑

1、配置eureka服务端和客户端遇到的坑,服务端需要指定eureka.client.serviceUrl.defaultZone=指定的服务端,否则他会连接默认的http://localhost:8761/eureka,因为eureka服务端默认指定了一个地址,查看org.springframework.cloud.netflix.eureka.EurekaClientConfigBean的源码...

hyly_zhard的博客 2282

pdf.js 移动端手势缩放功能实现与原生事件集成

本文详细解析了如何为pdf.js的viewer.html移动端页面实现流畅的双指捏合手势缩放功能。通过深入分析pdf.js的缩放机制,并利用原生触摸事件(touchstart、touchmove、touchend)进行集成,在不修改核心源码的前提下,为用户提供媲美原生应用的顺滑缩放体验,有效提升了移动端PDF阅读的专业性和用户满意度。

brandy的博客 490

SpringCloud之Eureka

Eureka简介 Eureka是Netflix开源的服务发现组件,本身是一个基于REST的服务。它包含server和client两部分。Spring Cloud将它继承在子项目Spring Cloud Netflix中,从而实现服务的发现与注册。 Eureka包含两个组件:Eureka Server和Eureka Client。 Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP地址,端口号,服务名称等等),Eureka Server

qq_25453181的博客 834

图神经网络实战(21)——图神经网络的可解释性

在本节中,我们探讨了应用于图神经网络 (Graph Neural Networks, GNN) 的可解释性人工智能 (Explainable Artificial Intelligence, XAI) 技术。可解释性是许多领域的关键要素,可以帮助我们建立更好的模型。我们介绍了不同的局部解释技术,并重点讨论了 GNNExplainer (基于扰动的方法),在图分类任务中应用 GNNExplainer。

盼小辉丶的博客 9577

基于YOLOv5s的RK3588多线程部署16FPS暴涨到120FPS 轻量化深度学习部署实战教程(包括性能优化与加速)37

本文介绍了如何在RK3588平台上利用线程池优化YOLOv5模型的推理性能。RK3588内置3个NPU核心,支持多核并行处理。作者设计了一个线程池架构:1个线程负责数据读取,10个线程处理NPU运算,1个线程输出结果。该架构包含任务队列、线程管理和工作线程三个核心组件,通过合理设置线程数、任务队列大小等参数确保性能稳定。文章提供了详细的C++实现代码,包括线程池初始化、任务提交、结果获取等功能模块,并讨论了多线程同步和内存管理的关键技术要点。该方案可显著提升深度学习模型在嵌入式设备上的部署效率。

FJN110的博客 9230

spring cloud的eureka.client.service-url.defaultZone配置eureka集群的写法

学亮编程手记 1万+

Python 神经计算实训 实训答案分享

【代码】Python 神经计算实训 实训答案分享。

2403_89314916的博客 352

Spring Cloud 组件和Spring Cloud Alibaba 组件

Netflix Hystrix:通过隔离服务的调用、监控运行状态,在服务出现故障或过载时,能快速切断故障链路,防止级联故障,并且提供 fallback 机制,保障服务可用性,还可设置熔断时间、重试策略等。Spring Cloud Config:提供集中化的外部配置管理,支持不同环境(开发、测试、生产等)下的配置分离,让应用能从远程仓库(如 Git)获取配置文件,实现配置的动态刷新,无需重启服务。可以基于 QPS、并发数等指标对服务进行限流,设置熔断策略,还能在控制台实时监控各项指标,动态调整策略。

weixin_45822714的博客 417

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring cloud

1、spring cloud : 一个云应用工具,为云应用开发的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁定、决策竞选、分布式会话和集群状态管理等操作 2、spring cloud config :配置管理开发工具包 3、 spring cloud Bus :事件消息总线用于集群(例如:配置变化时间)中传播状态变化,与spring cloud config 联合实现热部署 4...

华夏指挥官的博客 264

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring Cloud Alibaba | Nacos配置管理

Spring Cloud Alibaba | Nacos配置管理 Springboot: 2.1.6.RELEASE SpringCloud: Greenwich.SR1 如无特殊说明,本系列文章全采用以上版本 目录Spring Cloud Alibaba | Nacos配置管理1. pom.xml 项目依赖2. 在 bootstrap.properties 中配置 Nacos server 的地址和应用名3. 通过 Spring Cloud 原生注解 @RefreshScope 实现配置自动.

深蓝旭的博客 346

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spring Cloud应用框架

Spring Cloud是一个基于Spring Boot的微服务开发框架,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统中的常见模式,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等。

MIT计算认知研究院特聘研究员,DeepMind超对称量子拓扑项目组首席架构师。 1441

Spring Cloud 及Spring Cloud Alibaba 简介

Spring Cloud Alibaba是Spring Cloud的子项目,提供了 微服务开发的一站式解决方案,它符合Spring Cloud标准,是阿里提供的微服务解决方案。Spring Cloud Alibaba提供了一系列功能组件,具体包括:1、服务限流降级:Sentinel2、服务发现与注册:Nacos3、事件驱动:Spring Cloud Stream RocketMQ4、分布式事务:Seata。

xujinwei_gingko的专栏 557

(三)java版spring cloud+spring boot 社交电子商务平台 - Spring Cloud集成项目简介

电子商务平台源码请加企鹅求求:一零三八七七四六二六。Spring Cloud集成项目有很多,下面我们列举一下和Spring Cloud相关的优秀项目,我们的企业架构中用到了很多的优秀项目,说白了,也是站在巨人的肩膀上去整合的。在学习Spring Cloud之前大家必须了解一下相关项目,希望可以帮助到大家。 Spring Cloud Config 配置管理工具包,让你可以把配置放到远程服务器,集中化...

weixin_34037515的博客 138

dubbo官方文档中文_Spring Cloud中文网官方文档集合

https://springcloud.cc/spring-cloud-greenwich.html​springcloud.cchttps://springcloud.cc/apache-kafka-zhcn.html​springcloud.cchttps://springcloud.cc/emmet.html​springcloud.cchttps://springcloud.cc/inst...

weixin_39774219的博客 357

Spring Cloud 面试题及答案整理,最新面试题

Spring Cloud提供微服务相关的多种解决方案,如服务发现、配置管理、负载均衡、断路器等。Spring Cloud Gateway是Spring Cloud提供的一个API网关服务,用于处理微服务架构中的请求路由、转发和过滤等功能。Spring Boot的目的是简化新Spring应用的初始搭建以及开发过程,而Spring Cloud专注于提供微服务架构下的解决方案。Hystrix是Spring Cloud中常用的断路器实现,它提供了丰富的熔断、降级和监控功能,是微服务系统稳定性的重要保障。

知识极客 1193

【面试精选】54道Spring Cloud高频题整理(附答案背诵版)

Spring Cloud是一个基于Spring Boot的开源框架,它提供了在分布式系统中集成各种服务治理功能的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态等。其主要目标是通过简单的方式,快速地为开发人员构建与部署分布式系统中的通用模式。

tyler的博客 1051

(五)Nacos开发教程之SpringCloud集成配置管理

theme: vue-pro 这是我参与11月更文挑战的第17天,活动详情查看:2021最后一次更文挑战 前情回顾 我们在上一篇文章中讲述了SpringCloud项目集成Nacos服务注册功能,学习微服务的路上,已经迈出了第一步。 前面的文章里,我们暂时只讲述这些组件的基本集成,但是不要被我误导,这些只是基本使用,不能和实战相提并论,所以要想在真实的项目中使用这些组件,需要考虑的东西还...

Ijiran的博客 129

Spring Cloud Alibaba Config - 配置管理

1.配置管理 2.配置热更新 3.动态路由

2301_78117253的博客 150

Spring Cloud Alibaba (二)——Nacos

启动工程,打开nacos,记得选自己创建的命名空间。ps:(parent版本最好一样)其中:命名空间namespace为。

hwp_ing的博客 1792

认识微服务架构Spring Cloud

1.主要的子项目 1)spring cloud config是配置管理工具,通过它可以把配置信息放到远程服务器中,从而集中管理集群配置。目前支持本地存储、git和subvesion三种存储方式。 所有实例都可以通过config server来获取配置文件,每个服务实例相当于配置服务的客户端。 2)spring cloud consul封装了consul。consul是HashiCorp公司用GO语言开发的一个服务治理软件。它包含服务治理、健康检查、Key-Value存储、多数据中心功能。 3)spr

hongyucai的博客 230
上一篇: 初始 Spring Cloud
下一篇: Spring Cloud内部运行原理
MiKuJack
博客等级 码龄11年 6粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值