这一系列主要讲解一些基本的微服务知识及微服务架构。用一个例子以代码的方式加深理解。
Eureka Naminig Server:微服务之间进行通信
Riibbon: 客户端负载均衡
例子说明:
- 汇率服务(Forex Service)- 简称 FS
- 货币兑换服务(Currency Conversion Service) - 简称CCS
汇率服务(FS)
作为本列子中的服务提供者,汇率服务主要提供汇不同货币之间的汇率值。比如美元兑人民币是1:6.8,欧元兑卢比是1:75。
汇率服务接收的请求和返回分别是:
{
id: 10002,
from: "EUR",
to: "INR",
conversionMultiple: 75,
port: 8000,
}
货币兑换服务(CCS)
作为服务消费者,使用汇率服务提供的服务获得当前货币与将要兑换的货币的兑换值,然后计算出兑换的数量。比如我有10000欧元可以兑换750000卢比。
{
id: 10002,
from: "EUR",
to: "INR",
conversionMultiple: 75,
quantity: 10000,
totalCalculatedAmount: 750000,
port: 8000,
}
汇率服务与货币兑换服务交互图
image.pngEureka Naming Server 和 Ribbon
根据负载均衡的基本要求,一个服务可以应该有许多不同的实例,如上面的例子中
-
货币兑换服务可以有许多不多的实例
image.png
-
汇率服务可以有许多不同的实例
image.png
但是这些实例怎么进行通信及怎么实现负载均衡?
在接下来的一系列文章中,用Eureka Naming Server注册所有的微服务,用Ribbon轮巡调度算法实现负载均衡
此系列微服务架构的实现
作为一个例子,我们将创建两个汇率服务,两个货币兑换服务,实际上大型项目可以创建上百个实例,只不过作为例子,没必要弄的很复杂。
因为我们想动态的实现负载均衡,我们在服务之间相互通信,肯定不能通过在代码中以另一个实例的url地址去调用,因此我们需要一个命名服务,比如上文的CCS服务和FS这两个服务,CSS服务名称注册到eureka中了,FS服务名称注册到Eureka中了,CSS服务需要调用FS的服务,CSS就发一个FS服务名称到Eureka,Eureka会返回给CCS两个FS实例的url地址,CCS通过ribbon轮巡调度算法选择使用哪个url地址调用FS服务。如下图所示
image.png
现在不明白没关系,在接下来的文章中,我会以代码的方式具体的讲解。
网友评论