• 程序员不得不了解的微服务的现状和未来,建议收藏哦!!!


    一、微服务的现状及未来

    1.服务架构的演变

    1.1 单体架构

      单体架构应该是我们最先接触到的架构实现了,在单体架构中使用经典的三层模型,即表现层,业务逻辑层和数据访问层。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

      单体架构只适合在应用初期,且访问量比较小的情况下使用,优点是性价比很高,开发速度快,成本低,但缺点也很明显,这时扩展的首先就是考虑服务器的集群处理。

    1.2 集群

      针对单个服务器在访问量越来越大的情况越来越吃力的情况,我们可以考虑服务器的集群化处理。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

      集群的部署大大提高了服务的处理能力,同时利用Nginx提供的负载均衡机制,来分发请求,使用户的体验没有改变。

    1.3 垂直化

      上面的集群部署是可以解决一部分的服务器压力,但是随着用户访问量的增多,集群节点增加到一定阶段的时候,其实作用就已经不是太大了,因为将所有的业务都集中在一起,造成耦合度很高,这时我们可以考虑业务的拆分。来提高系统的性能。比如将原来在一个系统里面的业务拆分为用户系统,订单系统和商品系统。也就是我们讲的垂直化拆分如下:

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

      服务垂直化拆分后是可以大大地提高整体的服务处理能力,但是也会出现很多的冗余的代码,比如用户系统要操作订单库,要操作商品库,订单系统也有可能要操作用户库和商品库等。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    1.4 服务化

      针对垂直化拆分出现的问题,这时就出现了我们经常听到的SOA(面向服务的架构).什么是SOA呢?在《微服务设计》中有这么一段描述

    SOA是一种设计方法,其中包括多个服务,而服务之间通过配合最终会提供一系列功能,一个服务通常以独立的形式存在于操作系统进程中,服务之间通过网络调用,而非采用进程内调用的方式进行通信。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    业务重用,共享服务,

    1.5 微服务化

      在SOA的基础上继续演进就是我们讲的微服务。SOA的服务更细粒度的拆分后就是微服务。根据时间递进。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

      对基础运维的要求能力会越来越高,虚拟化,容器化等。

    微服务和SOA的区别:

    1.思想上:微服务的目的是解耦而SOA的目的是实现数据的互通和共享性。

    2.协议:微服务会使用一些轻量级的通信协议(Restful API)

    3.基础设施要求,微服务更加强调开发运维的持续交付。

    2. 微服务架构的需求

    2.1 RPC框架

      在微服务架构中,服务与服务之间要实现接口的调用我们肯定要通过相关的RPC(Remote Procedure Call)框架来实现。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

      常用的RPC框架有:Dubbo,Google的GRPC,Apache的Thrift,微博的Motan,京东的EasyRPC等。我们通过RPC框架可以去调用服务提供者提供的服务,但有一个前提是我们要能找到这个服务。通常我们的服务部署都是集群多节点的部署,所以在消费者这端就不可能直接写死在代码里面,这时就涉及到了服务的发现问题,这时就需要另一个组件注册中心了

    2.2 注册中心

      注册中心实现服务地址管理的功能,解决服务动态感知(上线,下线)。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    2.3 负载均衡

      在服务注册中心的介绍中我们可以看到负载均衡的应用。我们可以通过Ribbon来实现客户端的负载均衡,负载均衡的策略可以是:轮询,随机,根据响应时间来计算权重的轮询等。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    2.4 配置中心

      在微服务架构中我们有很多个服务,而每个服务中是都会有单独的配置文件的。里面有很多的配置信息的有关联的,而且对于后期的更新维护也会非常的不方便,这时配置中心就上场了。常用的配置中心有:
    apollo/Nacos/disconf/zookeeper/diamond/Spring Cloud Config

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    2.5 网关

      网关可以帮助我们完成用户请求的入口,路由。完成统一授权,日志的记录,权限的认证和限流及熔断操作。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    2.6 限流、降级、缓存

      在现实的微服务架构中的性能是很难满足所有的用户请求,这时我们就可以通过一些措施来保证我们的核心服务的正常运转。

    限流:sentinel、hystrix

    降级:主动降级(订单评论、广告关闭)、被动降级

    缓存:降低数据源访问频率、Redis等

    容错机制:服务出现挂机,宕机之后的处理机制。

     

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

     

    2.7 Bus

      Bus消息总线,实现异步化的通信机制。

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    2.8 链路监控

      因为微服务中的服务实在是太多了,为了能更好地监控个服务的情况,肯定就需要链路监控服务,我们可以通过sleuth+zipkin来实现,应用层监控,系统级监控

     

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

     

    3.SpringCloud 生态

      SpringCloud生态提供了快速构建微服务的技术组件。
    https://spring.io/projects/spring-cloud-netflix

     

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

     

    3.1 版本号说明

    • SR (发行版)
    • RC (后续发行版本)
    • M1/M2(PRE) 里程碑
    • GA 稳定版
    • BUILD-XXX 开发版

    3.2 SpringCloud和SpringBoot的关联关系

    大版本对应:

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    在实际开发过程中,我们需要更详细的版本对应:

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

    SpringCloud版本是和SpringBoot有关联关系的,官网中可以查看:
    https://docs.spring.io/spring-cloud/docs/current/reference/html/

    程序员不得不了解的微服务的现状和未来,建议收藏哦

     

      到这儿,我们也清楚了要学习好SpringCloud中相关组件的内容,SpringBoot是我们必须要掌握好的一个前置内容.下篇文章开始给大家详细介绍SpringBoot相关的内容,欢迎点赞收藏加关注哦!!!

     

  • 相关阅读:
    docker 如何启动空容器
    dotnet5.0 aspnetcore runtime docker镜像
    abp asp.net core 手动获取容器中的服务
    我把代码写在别人的分支了?别慌,有办法解决
    var重复声明为什么后续声明会被忽略
    flex布局不常用到的属性整理
    微信openID和unionID的区别
    js稀疏数组、密集数组、数组空位、手写数组map方法
    vscode格式化代码换行?试试这个配置
    封装一个公共组件并上传到npm仓库
  • 原文地址:https://www.cnblogs.com/xueSpring/p/15035896.html
Copyright © 2020-2023  润新知