博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学习笔记】spring cloud和微服务(一)介绍
阅读量:3904 次
发布时间:2019-05-23

本文共 2063 字,大约阅读时间需要 6 分钟。

什么是微服务

就目前来看,微服务本身并没有一个严格的定义,每个人对微服务的理解都不同。Martin Fowler 在他的博客中是这样描述微服务的:(中文)

微服务架构风格是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中 ,服务间通信采用轻量级通信机制(通常用 HTTP 资源 API ) 这些服务围绕业务能力构建并且可通过全自动部署机制独立部署这些服务共用一个最小型的集中式的管理,服务可用不同的语言开发,使用不同的数据存储技术。

微服务架构的优点 微服务架构有如下优点。

●易于开发和维护:一个微服务只会关注一个特定的业务功能,所以它业务清晰、代码量较少。开发和维护单个微服务相对简单。而整个应用是由若干个微服务构建而成的,所以整个应用也会被维持在一个可控状态。
●单个微服务启动较快:单个微服务代码量较少,所以启动会比较快。
●局部修改容易部署:单体应用只要有修改,就得重新部署整个应用,微服务解决了这样的问题。一般来说,对某个微服务进行修改,只需要重新部署这个服务即可。
●技术栈不受限:在微服务架构中,可以结合项目业务及团队的特点,合理地选择技术栈。例如某些服务可使用关系型数据库MySQL;某些微服务有图形计算的需求,可以使用Neo4j;甚至可根据需要,部分微服务使用Java开发,部分微服务使用Node.js开发。
●按需伸缩:可根据需求,实现细粒度的扩展。例如,系统中的某个微服务遇到了瓶颈,可以结合这个微服务的业务特点,增加内存、升级CPU或者是增加节点。

**

使用微服务架构面临的挑战

**。

●运维要求较高:更多的服务意味着更多的运维投入。在单体架构中,只需要保证一个应用的正常运行。而在微服务中,需要保证几十甚至几百个服务的正常运行与协作,这给运维带来了很大的挑战。
●分布式固有的复杂性:使用微服务构建的是分布式系统。对于一个分布式系统,系统容错、网络延迟、分布式事务等都会带来巨大的挑战。
●接口调整成本高:微服务之间通过接口进行通信。如果修改某一个微服务的API,可能所有使用了该接口的微服务都需要做调整。

gradle init --type pom可以将maven转化为pom项目

●开发框架的选择:可使用Spring Cloud作为微服务开发框架。首先,Spring Cloud具备开箱即用的生产特性,可大大提升开发效率;再者,Spring Cloud的文档丰富、社区活跃,遇到问题比较容易获得支持;更为可贵的是,SpringCloud为微服务架构提供了完整的解决方案。 当然,也可使用其他的开发框架或者解决方案来实现微服务,例如Dubbo、Dropwizard、Armada等。
●运行平台:微服务并不绑定运行平台,将微服务部署在PCServer,或者阿里云、AWS等云计算平台都是可以的。

解决硬编码–服务发现组件

把提供者的网络地址(IP和端口等)硬编码在代码中或者将其提取到配置文件中去。例如:

user:
userServiceUrl: http://localhost:8000
代码:
@Value("${user. userServiceUrl}")
private String userServiceUrl;
@GetMapping("/user/{id}")
public User findById(@PathVariable long id){
return this.xxx;}

这种方式有很多问题,如下所示。

●适用场景有局限:如果服务提供者的网络地址(IP和端口)发生了变化,会影响服务消费者。例如,用户微服务的网络地址发生变化,就需要修改电影微服务的配置,并重新发布。这显然是不可取的。
●无法动态伸缩:在生产环境中,每个微服务一般都会部署多个实例,从而实现容灾和负载均衡。在微服务架构的系统中,还需要系统具备自动伸缩的能力,例如动态增减节点等。硬编码无法适应这种需求。
要想解决这些问题,服务消费者需要一个强大的服务发现机制,服务消费者使用这种机制获取服务提供者的网络信息。不仅如此,即使服务提供者的信息发生变化,服务消费者也无须修改配置文件。
服务发现组件提供这种能力。在微服务架构中,服务发现组件是一个非常关键的组件。
服务发现组件应具备以下功能。
●服务注册表:是服务发现组件的核心,它用来记录各个微服务的信息,例如微服务的名称、IP、端口等。服务注册表提供查询API和管理API,查询API用于查询可用的微服务实例,管理API用于服务的注册和注销。
●服务注册与服务发现:服务注册是指微服务在启动时,将自己的信息注册到服务发现组件上的过程。服务发现是指查询可用微服务列表及其网络地址的机制。
●服务检查:服务发现组件使用一定机制定时检测已注册的服务,如发现某实例长时间无法访问,就会从服务注册表中移除该实例。
Spring Cloud提供了多种服务发现组件的支持,例如Eureka、Consul和ZooKeeper等。

转载地址:http://ktten.baihongyu.com/

你可能感兴趣的文章
通过DOM方式对xml文件进行解析
查看>>
利用DOM方式生成XML文件
查看>>
java中使用SAX生成XML文件
查看>>
利用java获取网页内容
查看>>
Matlab中画图的说明
查看>>
python之对list进行切片学习
查看>>
五人预测比赛结果均答对一半,求比赛名次
查看>>
在屏幕上打印杨辉三角
查看>>
创建一个数组,实现初始化、逆置和清空
查看>>
棋盘游戏
查看>>
编写一个函数,它从一个字符串中提取一个子字符串
查看>>
C语言:编写strcpy函数
查看>>
两个整数二进制表达中,有多少个位(bit)不同
查看>>
编写函数返回值value的二进制模式从左到右翻转后的值
查看>>
一组数据中只有一个数字出现一次,其他数成对出现,找出这个数
查看>>
String类的浅拷贝和深拷贝
查看>>
c++单链表【构造函数、运算符重载、析构函数、增删查改等】
查看>>
String深拷贝、比较及增删查改等操作
查看>>
智能指针:模拟实现auto_ptr,scoped_ptr,shared_ptr
查看>>
【C++】智能指针shared_ptr 定位删除器(仿函数)
查看>>