java 搭建微服务架构_使用 Spring Cloud 搭建微服务项目架构

前言:

本文为使用 Spring Cloud 搭建微服务项目架构的整体思路讲述,欢迎讨论。文章对新手不友好,推荐新手访问此文:史上最简单的 SpringCloud 教程 | 终章,讲得很好。

1、微服务的定义

微服务的通俗定义就是一个小型的项目服务,但是写文章则需要有明确的定义才行。文绉绉的描述语言大概如下:

一个能够独立运行的、可提供完整服务的微型服务。

这里面是三个条件:独立运行、可提供完整服务、微型。

独立运行则意味着跟其他服务完全解耦,如果服务之间存在业务关联,要么把他们并为一个微服务,要么通过接口进行交互。这也意味着,不同微服务之间如果涉及到数据库操作的话,一个微服务不可以直接操作属于另一个微服务的库表,即使他们的表放在同一个库。因为这种行为一旦发生,那么这两个微服务又出现了新的耦合维度。

可提供完整服务则意味着其他与之无关的微服务即使挂掉,它自己通过接口提供的服务也不受任何影响,除非他们之间存在接口互动上的关联,那样也只影响到有关联的。

微型则表示每个微服务都不会有太多的接口,否则就变成了传统的项目了。

任何满足以上三个条件的服务,我都认为是一个微服务了——所以,微服务是一个概念,而不是一种技术。不管使用何种技术、何种框架、何种方式进行搭建。

2、微服务的好处

微服务的好处主要有:敏捷开发、选择性扩容等

使用微服务架构的项目,因为微服务之间完全解耦,所以可实现敏捷开发;同时也可以根据微服务的并发量进行选择性扩容或集群等。

3、为什么要用 Spring Cloud

Spring Cloud 推荐了很多微服务的解决方案,使用 Spring Cloud 可快速搭建微服务架构,并且背靠 Spring 社区的良好生态。

4、使用 Spring Cloud 搭建微服务的思路

首先需要一个注册服务的注册中心,可选择zookeeper、eureka。

其他的微服务都在自己搭建的注册中心注册,通过ribbon+resttemplate进行通信,这时url不需要使用完整的ip+port的方式,而是使用微服务在注册中心注册时提供的名称即可。只用注册名而非ip+port的方式进行通信还有一个好处,就是可以实现集群:同一个微服务部署多份,不管ip和port相差多远,注册中心都会调度微服务的集群,起到负载均衡的效果。

还有使用feign可达到类RPC的接口调用效果。

微服务提供接口给外部访问时,不能像微服务间通信一样使用注册名通信那么方便,还是需要ip+port才能访问到:这样对接口使用方来说时非常麻烦的事。这时可通过配置统一网关,让使用方通过网关再转发到对应的微服务即可。这样,多个微服务及集群的情况,对于调用方来说都是透明的,用户感知就是调用了某个接口,而不是特定的某个微服务。

统一网关可使用zuul来配置。

这样,就基本完成了一个微服务的搭建,不使用框架的话,搭建微服务需要解决的问题颇多,不建议自己造轮子。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值