前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试也需要学习的微服务知识(一)

测试也需要学习的微服务知识(一)

作者头像
老_张
发布2021-08-06 14:30:15
4960
发布2021-08-06 14:30:15
举报

为什么要写微服务系列

  • 很多测试局限于业务测试或者自动化脚本,对微服务架构不了解。
  • 测试学习微服务架构难以找到切入点。
  • 中间件测试一票难求,直接找中间件测试资料也很难,测中间件最重要的是你懂原理,知道怎么搭建、怎么玩。

基于以上种种,本公众号针对测试开始写微服务专栏,尽可能做个长期连载,此公众号最长的系列连载是18篇,希望这个系列能有所突破,尽量说些大白话让测试同学能够找到更多的切入点,今天先聊聊微服务背景和网关的知识点。

单机架构

单机架构目前已经不算多见,往往是一个开发包里面包含多种功能,如订单,支付,商品都在一起,不会区分业务功能点。这样的方式开发周期长,依赖复杂。

单机架构

分布式架构

soa架构

(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务通常以独立的形式存在与操作系统进程中。各个服务之间 通过网络调用。

微服务架构

其实和 SOA 架构类似,微服务是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

soa与微服务的核心区别

从解释来看,可能看不出soa与微服务架构的核心区别,微服务是完全去中心化的,而SOA架构有一套ESB企业服务总线,ESB就是一根管道,用来连接各个服务节点。为了集成不同系统,不同协议的服务,ESB 做了消息的转化解释和路由工作,让不同的服务互联互通。

soa与微服务核心区别

springboot,springcloud,springcloudAlibaba区别和联系

springboot

用我的话来理解,Spring Boot就是整合了框架的框架,它让一切依赖都变得有序简单,你不用操心A.jar是什么版本,又依赖哪些版本的jar,它默认配置了很多框架的使用方式,就像 maven整合了所有的jar包,Spring Boot整合了所有的框架,第三方库的功能你拿着就能用。

springcloud

Spring Cloud可以基于springboot,是一套分布式服务治理的框架,既然它是一套服务治理的框架,那么它本身不会提供具体功能性的操作,更专注于服务之间的通讯、熔断、监控等。因此就需要很多的组件来支持一套功能,更多的在于服务间的管理功能,其中注册中心eureka2.0已经闭源,大部分使用eureka的版本还是1.0。

springcloudAlibaba

SpringCloudAlibaba实际上对我们的SpringCloud2.x和1.x实现拓展组件功能,尤其对于服务的配置,发现,管理更新了自己的组建nacos。

nacos是分布式配置中心+分布式注册中心=Eureka+config。

研发SpringCloudAlibaba目的是为了做生态链,推广阿里的产品,如果使用了SpringCloudAlibaba,最好使用alibaba整个体系产品。

目前市面上用的最多的微服务架构是Springcloud和SpringcloudAlibaba,我们接下来了解微服务最核心的组件注册中心。

注册中心的作用

服务发现: 服务注册/反注册:保存服务提供者和服务调用者的信息 服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能 服务路由(可选):具有筛选整合服务提供者的能力。

服务配置: 配置订阅:服务提供者和服务调用者订阅微服务相关的配置 配置下发:主动将配置推送给服务提供者和服务调用者

服务健康检测: 检测服务提供者的健康情况

目前最常见的注册中心是eureka和nacos,我们先来学习eureka,虽然2.0版本已经闭源,但是目前使用1.0版本的公司也很多。Eureka是Netflix开发的服务发现框架,SpringCloud将它集成在自己的子项目spring-cloud-netflix中,实现SpringCloud的服务发现功能。

上图简要描述了Eureka的基本架构,由3个角色组成: 1、Eureka Server 提供服务注册和发现 2、Service Provider 服务提供方,将自身服务注册到Eureka,从而使服务消费方能够找到 3、Service Consumer 服务消费方 从Eureka获取注册服务列表,从而能够消费服务

Eureka的交互流程与原理

图是来自Eureka官方的架构图,大致描述了Eureka集群的工作过程。图中包含的组件非常多,可能比较难以理解,我们用通俗易懂的语言解释一下:

  • Application Service 相当于本书中的服务提供者,Application Client相当于服务消费者;
  • Make Remote Call,可以简单理解为调用RESTful API;
  • Eureka Client是一个Java客户端,用于简化与Eureka Server的交互;Eureka Server提供服务发现的能力,各个微服务启动时,会通过Eureka Client向Eureka Server进行注册自己的信息(例如网络信息),Eureka Server会存储该服务的信息;
  • 微服务启动后,会周期性地向Eureka Server发送心跳(默认周期为30秒)以续约自己的信息。如果Eureka Server在一定时间内没有接收到某个微服务节点的心跳,Eureka Server将会注销该微服务节点(默认90秒)

如何引入Eureka服务?

对于idea编辑器来说,我们新建Spring项目即可,在Cloud Discovery选择Eureka Server即可,如图所示

关于项目创建步骤不一一展示,大家百度下相关的文章非常多,没什么难点,项目创建完成后,进入项目进行配置。

1.在启动代码中添加@EnableEurekaServer

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

2.在application.properties添加配置文件

server:
  port: 8001

eureka:
  instance:
    hostname: localhost
  client:
  #声明自己是个服务端
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  server:
    enable-self-preservation: false

3.启动项目访问,本地:8001, 可以看到如下页面

此时列表页是空的,还没有服务接入,接下来,我选用一服务接入,我这边有一个product的demo,首先看下包的引入

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

修改application.yml, 添加如下内容

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8001/eureka/

文本结构如下

启动成功后你会发现,eureka管理页面有了相关服务的注册

至此你就完成了最简单的注册中心搭建以及服务接入,你可以看到eureka面板页面还有如下监控信息:

total-avail-memory : 总共可用的内存environment : 环境名称,默认test

num-of-cpus : CPU的个数

current-memory-usage : 当前已经使用内存的百分比

server-uptime : 服务启动时间

registered-replicas : 相邻集群复制节点

unavailable-replicas :不可用的集群复制节点

available-replicas :可用的相邻集群复制节点

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老张的求知思考世界 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要写微服务系列
  • 单机架构
  • 分布式架构
    • soa架构
      • 微服务架构
      • springboot,springcloud,springcloudAlibaba区别和联系
        • springboot
          • springcloud
            • springcloudAlibaba
            • 注册中心的作用
            • 如何引入Eureka服务?
            相关产品与服务
            微服务引擎 TSE
            微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档