wangqi的blog

贫,气不改;达,志不改


  • 首页

  • 关于

  • 归档

  • 搜索

Eureka(七)——ribbon请求重试

发表于 2018-07-02

上一篇文章Eureka(六)——服务消费的例子中,实现了对服务名为eureka-client的/dc接口的调用。由于RestTemplate被@LoadBalanced修饰,所以它具备客户端负载均衡的能力,当请求真正发起的时候,url中的服务名会根据负载均衡策略从服务清单中挑选出一个实例来进行访问。

阅读全文 »

Eureka(六)——服务消费

发表于 2018-06-29

上一篇文章Eureka(五)——高可用中,我们介绍了如何构建高可用的服务注册中心和服务提供。

本文我们来看看如何去消费服务提供者的接口。

阅读全文 »

Eureka(五)——高可用

发表于 2018-06-28

在文章Eureka(一)——服务注册与发现中,我们举的例子都是单点运行的,不适合于生产环境。

阅读全文 »

ScheduledThreadPoolExecutor

发表于 2018-06-27

ScheduledThreadPoolExecutor继承ThreadPoolExecutor类,实现ScheduledExecutorService接口。它是一个支持定时执行或者延时执行的线程池。

阅读全文 »

Eureka(四)——server实现细节

发表于 2018-06-25

上一篇文章Eureka(三)——client注册过程中,我们详述了Eureka Client是如何完成注册、续约、获取服务、下线等操作的。本篇文章,我们来记述Eureka Server是如何工作的。

阅读全文 »

Eureka(三)——client注册过程

发表于 2018-06-25

服务注册是Spring Cloud的关键功能,本文着重来分析eureka-client服务注册的过程。

阅读全文 »

wait、notify、notifyAll和Condition

发表于 2018-06-22

经典的生产者-消费者模型是线程之间协作的典型应用:当队列满时,生产者需要等待队列有空间才能继续往里面放入商品,而在等待期间,生产者必须释放对临界资源(即队列)的占用权。因为生产者如果不释放对临界资源的占用权,那么消费者就无法消费队列中的商品,就不会让队列有空间,那么生产者就会一直无限等待下去。因此,一般情况下,当队列满时,会让生产者交出对临界资源的占用权,并进入挂起状态。然后等待消费者消费了商品,然后消费者通知生产者队列有空间了。同样的,当队列空时,消费者也必须等待,等待生产者通知它队列中有商品了。这种互相通信的过程就是线程间的协作。

Java中线程协作的最常见的两种方式:利用Object.wait()、Object.notify()和使用Condition

阅读全文 »

Eureka(二)——自我保护模式

发表于 2018-06-20

根据Eureka(一)——服务注册与发现,我们实现了一个服务注册中心和一个服务提供方。经过一段时间,我们发现服务注册中心产生了一个报警:

阅读全文 »

Eureka(一)——服务注册与发现

发表于 2018-06-20

微服务架构就是将一个完整的应用从一个完整的应用从数据存储开始垂直拆分成多个不同的服务,每个服务都能独立部署、独立维护、独立扩展,服务与服务间通过诸如RESTful API的方式互相调用。

服务注册与发现是微服务架构的核心功能,本文将尝试实现一个简单的服务注册与发现的demo。

Spring Cloud的系列博客使用的Spring-boot版本为2.0.1.RELEASE,Spring-cloud版本为Finchley.RC1

阅读全文 »

Guava Multimap

发表于 2018-06-19

有时候我们需要这样的数据类型Map<String, Collection>,guava中的Multimap就是为了解决这类问题的。

Multimap提供了丰富的实现,所以你可以用它来替代程序里的Map<K, Collection>,具体的实现如下:

实现 Key实现 Value实现
ArrayListMultiamp HashMap ArrayList
HashMultimap HashMap HashSet
LinkedListMultimap LinkedHashMap LinkedList
LinkedHashMultimap LinkedHashMap LinkedHashSet
TreeMultimap TreeMap TreeSet
ImmutableListMultimap ImmutableMap ImmutableList
ImmutableSetMultimap ImmutableMap ImmutableSet

上述Multimap的实现都是线程不安全的,如果想要创建线程安全的Multimap需要调用Multimaps.synchronizedMultimap(Multimap<K, V> multimap)方法将multimap包装成线程安全的版本。

http://outofmemory.cn/java/guava/Collections/Multimaps

https://blog.csdn.net/qq_34310242/article/details/76218320

1…111213…20

wangqi

199 日志
GitHub E-Mail
© 2025 wangqi
由 Hexo 强力驱动
|
主题 — NexT.Muse v5.1.4