微服务的概念和微服务技术的对比

发布于:2022-10-16 ⋅ 阅读:(370) ⋅ 点赞:(0)

1.认识微服务

随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?

1.1.单体架构

单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BCUc55oP-1665907177980)(assets/image-20210713202807818.png)]

单体架构的优缺点如下:

优点:

  • 架构简单
  • 部署成本低

缺点:

  • 耦合度高(维护困难、升级困难)

1.2.分布式架构

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

在这里插入图片描述

分布式架构的优缺点:

优点:

  • 降低服务耦合
  • 有利于服务升级和拓展

缺点:

  • 服务调用关系错综复杂

分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:

  • 服务拆分的粒度如何界定?
  • 服务之间如何调用?
  • 服务的调用关系如何管理?

人们需要制定一套行之有效的标准来约束分布式架构。

1.3.微服务

微服务的架构特征:

  • 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
  • 自治:团队独立、技术独立、数据独立,独立部署和交付
  • 面向服务:服务提供统一标准的接口,与语言和技术无关
  • 隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

在这里插入图片描述

微服务的上述特性其实是在给分布式架构制定一个标准,进一步降低服务之间的耦合度,提供服务的独立性和灵活性。做到高内聚,低耦合。

2.微服务的技术实现

可以认为微服务是一种经过良好架构设计的分布式架构方案

但方案该怎么落地?选用什么样的技术栈?全球的互联网公司都在积极尝试自己的微服务落地方案。

在国内根据社区的活跃程度,微服务技术分为三个体系:Dubbo 体系、Spring Cloud 体系、K8s 体系

Dubbo SpringCloud K8s
配置管理 Diamond/Nacos Spring Cloud Config ConfigMaps/Secrets
服务发现与复杂均衡 Zookpeer/Nacos+client Eureka+ribbon Service
弹性容错 Sentinel Hystrix HealthCheck/ServiceMesh/Probe
API管理 Zuul/Spring Cloud Gateway Ingress
服务安全 容器安全
日志监控 ELK ELK EFK
链路监控 Sleuth Jaeper
Metrics监控 Dubbo Admin/Monitor Actuator/MicroMeter+ Prometheus Heapster/Metrics-Server+Prometheus
调度和发布 Jar/War Jar/War Docker Image/Helm
自愈和自动伸缩 AutoScaler

Dubbo,是由阿里巴巴技术团队,在生产中实际应用的解决方案;亮点是由国内公司阿里巴巴背书,且实际业务中脱产,成熟稳定,RPC高性能支持流量治理,不足之处为耦合度高,更新迭代慢,国外社区小,仅支持JVM运行

Spring Cloud,由Netflix 背书是Spring 框架演变出的微服务架构解决方案;国外社区活跃,程度高,不足之处,JVM运行,耗资源

Kubernetes(K8S),由谷歌技术团队背书,是由谷歌技术团队在生产中应用的解决方案。技术稳定,省去了很多的技术实现,但是运维门槛高,学习成本大,问题解决复杂

3.总结

随着业务规模的升级,架构模式也随着升级,为了让技术开发人员,更加关注业务的开发,因此微服务架构应运而生。微服务架构提供了一系列的基础设施能力的支撑,省去了技术开发人员的对于公共设施能力的关注,专注于业务开发。然而不同的微服务技术有各自的优缺点,架构师需要了解微服务技术的关注点和技术组成,需要根据实际的公司情况,技术团队能力以及产品业务背景选择合适的微服务技术。

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到