微服务什么是以及微服务框架

本文最后更新于2023.03.28-16:02,某些文章具有时效性,若有错误或已失效,请在下方留言或联系涛哥

微服务(microservice

微服务是分布式架构的一种,分布式架构其实就是要把服务做一个拆分,而springcloud只是解决了拆分过程中的服务治理问题。

在单体架构中,我们把所有的服务都写在一起,随着业务的复杂代码的耦合度就会越来越高,不便于将来的升级维护。

所以往往需要拆分这些服务,微服务在拆分的时候,会根据业务功能模块把一个单体的应用拆分成许多个独立的项目,每个项目完成一部分的业务功能,然后独立开发和部署。这些独立的项目就成为一个微服务。进而构成一个服务集群。

首先我们来看看架构的逐渐变形

单体架构---》SOA架构(面向服务架构)---》微服务

大家先看一张图。如下图

微服务VS单体架构

不同点 微服务架构 单体架构
团队规模 微服务架构可以将传统模式下的单个应用拆分为多个独立的服务,每个微服务都可以单独开发、部署和维护。每个服务从设计、开发到维护所需的团队规模小,团队管理成本小。 单体架构的应用程序通常需要一个大型团队,围绕一个庞大的应用程序工作,团队管理的成本大。
数据存储方式 不同的微服务可以使用不同的数据存储方式,例如有的用 Redis,有的使用 MySQL。 单一架构的所有模块共享同一个公共数据库,存储方式相对单一。
部署方式 微服务架构中每个服务都可以独立部署,也可以独立于其他服务进行扩展。如果部署得当,基于微服务的架构可以帮助企业提高应用程序的部署效率。 采用单体架构的应用程序的每一次功能更改或 bug 修复都必须对整个应用程序重新进行部署。
开发模式 在采用微服务架构的应用程序中,不同模块可以使用不同的技术或语言进行开发,开发模式更加灵活。 在采用单体架构的应用程序中,所有模块使用的技术和语言必须相同,开发模式受限。
故障隔离 在微服务架构中,故障被隔离在单个服务中,避免系统的整体崩溃。 在单体架构中,当一个组件出现故障时,故障很可能会在进程中蔓延,导致系统全局不可用。
项目结构 微服务架构将单个应用程序拆分为多个独立的小型服务,每个服务都可以独立的开发、部署和维护,每个服务都能完成一项特定的业务需求。 单体架构的应用程序,所有的业务逻辑都集中在同一个工程中。

微服务的特点

微服务具有以下特点:

  • 服务按照业务来划分,每个服务通常只专注于某一个特定的业务、所需代码量小,复杂度低、易于维护。
  • 每个微服都可以独立开发、部署和运行,且代码量较少,因此启动和运行速度较快。
  • 每个服务从设计、开发、测试到维护所需的团队规模小,一般 8 到 10 人,团队管理成本小。
  • 采用单体架构的应用程序只要有任何修改,就需要重新部署整个应用才能生效,而微服务则完美地解决了这一问题。在微服架构中,某个微服务修改后,只需要重新部署这个服务即可,而不需要重新部署整个应用程序。
  • 在微服务架构中,开发人员可以结合项目业务及团队的特点,合理地选择语言和工具进行开发和部署,不同的微服务可以使用不同的语言和工具。
  • 微服务具备良好的可扩展性。随着业务的不断增加,微服务的体积和代码量都会急剧膨胀,此时我们可以根据业务将微服务再次进行拆分;除此之外,当用户量和并发量的增加时,我们还可以将微服务集群化部署,从而增加系统的负载能力。
  • 微服务能够与容器(Docker)配合使用,实现快速迭代、快速构建、快速部署。
  • 微服务具有良好的故障隔离能力,当应用程序中的某个微服发生故障时,该故障会被隔离在当前服务中,而不会波及到其他微服务造成整个系统的瘫痪。
  • 微服务系统具有链路追踪的能力。

如何实现微服务

  • 框架:
    • 注册中心(Eureka,Consul)
    • 配置中心(config,Nacos)
    • 网关(zuul,gateway)
    • 断路器(Hystrix)
    • 负载均衡(Ribbon,Feign)
    • 声明式服务调用(Ribbon,Feign,Dubbo)
  • 服务拆分

    微服务框架

    Java 微服务框架

    • Spring Cloud:它能够基于 REST 服务来构建服务,帮助架构师构建出一套完整的微服务技术生态链。
    • Dropwizard:用于开发高性能和 Restful 的 Web 服务,对配置、应用程序指标、日志记录和操作工具都提供了开箱即用的支持。
    • Restlet: 该框架遵循 RST 架构风格,可以帮助 Java 开发人员构建微服务。
    • Spark:最好的 Java 微服务框架之一,该框架支持通过 Java 8 和 Kotlin 创建微服务架构的应用程序。
    • Dubbo:由阿里巴巴开源的分布式服务治理框架。

    Go 语言微服务框

    Go 语言中的微服务框架较少,使用的较多的是 GoMicro,它是一个 RPC 框架,具有负载均衡、服务发现、同步通信、异步通讯和消息编码等功能。

    Phyton 微服务框架

    Phyton 中的微服务框架主要有 Flask、Falcon、Bottle、Nameko 和 CherryPy 等。 

    NodeJS微服务框架

    Molecular 是一种使用 NodeJS 构建的事件驱动架构,该框架内置了服务注册表、动态服务发现、负载均衡、容错功能和内置缓存等组件。 

    结尾

    由于涛哥主要是学习Java框架

    接下涛哥将会和您一起学习如何搭建一个完整的微服务架构包括SpringCloud,SpringCloudAlibaba,Dubbo+Zeekeeper/Redis等不同的Java框架,如需了解后续内容请关注涛哥博客最新内容

    阅读剩余
    THE END