微服务学习(一)——理解什么是微服务及微服务的技术栈

一、什么是微服务

1. 微服务技术理解

微服务是分布式架构的一种,而分布式架构就是要把服务做拆分,其中,拆分的过程中会产生各种各样的问题需要解决,而Spring Cloud仅仅解决了服务拆分时的服务治理问题,至于其他的服务拆分所产生的问题Spring Cloud并没有给出解决方案,所以微服务技术 ≠ Spring Cloud。

  • 分布式架构:就是根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。

    ​ 松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝

  • 分布式架构要考虑的问题:

    1. 服务拆分粒度如何
    2. 服务集群地址如何维护
    3. 服务之间如何实现远程调用
    4. 服务健康状态如何感知(挂没挂)

    有众多的分布式架构实现技术,而微服务,就是一种经过良好架构设计的分布式架构方案

2. 微服务技术栈包括

  1. 首先,微服务要做的第一件事就是拆分,把传统的单体架构,根据业务功能模块,拆分成许多个独立的项目,每个项目完成一部分业务功能,将来独立开发和部署。把这种一个独立的项目称为服务,一个大型的互联网项目往往包含数百上千的服务,最终形成一个服务集群。而一个业务,往往需要多个服务来完成,各个服务之间互相调用,会比较乱。

  2. 所以,微服务中有个组件叫:注册中心,可以去记录微服务中每个服务的IP、端口以及能干什么事儿这些信息。当有一个服务中要调用另一个服务时,不需要自己记录另外的服务的IP,只需要去找注册中心即可,从注册中心拉取对方的服务信息。

  3. 同时,随着服务越来越多,每个服务都有自己的配置文件,将来如果要更改配置,去逐一更改每个服务的配置文件过于麻烦,则微服务中还有个组件叫:配置中心,它可以统一的管理整个服务群中成百上千的配置。如果以后有一些配置需要变更,只需要找到配置中心即可,它会通知相关的服务,实现配置的热更新。

  4. 当微服务运行起来之后,用户就可以来访问,由于有众多的服务群,为了管理用户访问服务的过程,微服务中有个组件叫:服务网关,一方面对用户身份做校验,另一方面可以把用户的请求路由到具体的服务。

  5. 由于超多个用户和服务高并发的访问数据库,因此,微服务技术栈中包括组件:分布式缓存,就是把数据库中的数据放入到内存当中。

  6. 当有海量数据复杂的搜索时,还需要组件:分布式搜索,加快搜索。

  7. 微服务技术栈中还需要组件:消息队列,用来实现异步通信。

  8. 如此庞大的微服务架构,当遇到问题时不好排查,所以为了解决服务的异常定位问题,又引入两个组件:分布式日志服务,可以统计整个集群当中成百上千的服务的运行日志,做存储、统计和分析等。系统监控链路追踪,可以实时监控整个集群中每个服务节点的运行状态、CPU的负载、内存的占用等情况

  9. 为了有效的部署成百上千的服务集群,光靠人工部署是不现实的,所以要做到自动化部署,需要Jenkins这样的工具,可以帮助你对微服务项目进行自动化编译,基于Docker进行打包,形成镜像,再基于kubernetes或者RANCHER这样的技术进行自动化部署,这一套称之为:持续集成

以上是完整的微服务技术栈。

3. 微服务技术栈大分块

  1. 微服务治理相关的的技术:也就是Spring Cloud框架所包含的一些技术。

    例如:注册发现、远程调用、负载均衡、配置管理、网关路由、系统保护、流量控制、熔断降级、服务授权、分布式事务、TCC模型、AT模型、Seata等

  2. 缓存技术:SpringDataRedis、Redis数据结构、Redis主从复制、Redis持久化、Redis分片集群、多级缓存分层、缓存穿透雪崩、OpenResty、缓存数据同步、Nginx本地缓存、Lua脚本、等

  3. 异步通信技术:MQ消息模型等

  4. 搜索技术:ES集群等

  5. 持续集成DevOps:Docker等

4. 微服务的特征

  1. 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发
  2. 面向服务:微服务对外暴露业务接口
  3. 自治:(各个服务)团队独立、技术独立、数据独立、部署独立
  4. 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

5. 微服务落地技术对比

微服务落地技术最知名的是:SpringCloud、阿里巴巴的Dubbo

DubboSpringCloudSpringCloudAlibaba
注册中心zookeeper、RedisEureka、ConsulNacos、Eureka
服务远程调用Dubbo协议Feign(http协议)Dubbo、Feign
配置中心SpringCloudConfigSpringCloudConfig、Nacos
服务网关SpringCloudGateway、ZuulSpringCloudGateway、Zuul
服务监控和保护dubbo-admin,功能弱HystrixSentinel
  • Dubbo:它的核心就是服务的远程调用,所以Dubbo的微服务技术体系并不完整
  • SpringCloud:整合了各种微服务技术,形成了完整的微服务技术体系。并基于SpringBoot实现了这些组件的自动装配,从而提供良好的开箱体验。(SpringCloud与SpringBoot有互相版本兼容关系)
  • SpringCloudAlibaba:兼容了SpringCloud的接口,同时又整合Dubbo进来,新增了一些技术栈

企业中常用的微服务技术栈组合:

1. SpringCloud+Feign(使用SpringCloud技术栈,服务接口采用Restful风格,服务调用采用Feign方式)
2. SpringCloudAlibaba+Feign(使用SpringCloudAlibaba技术栈,服务接口采用Restful风格,服务调用采用Feign方式)
3. SpringCloudAlibaba+Dubbo(使用SpringCloudAlibaba技术栈,服务接口采用Dubbo协议标准,服务调用采用Dubbo方式)
4. Dubbo原始模型(基于Dubbo老旧技术体系,服务接口采用Dubbo协议标准,服务调用采用Dubbo方式)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值