微服务入门详解

发布时间:2024-08-13 12:01

目标:

了解微服务、微服务架构以及架构演进过程


学习步骤:

1、讲微服务前先要明白什么是单体架构
2、 什么是微服务?
3、微服务架构又是什么?
4、微服务的优缺点分析
5、微服务技术栈有哪些?
6、为什么要选择SpringCloud作为微服务架构?

一、先聊单体架构

单体架构,就是一个工程对应一个归档包,也就是war包,并且这个war包 包含了该工程的所有功能。
这种就是单体应用,也就是单体架构。
再谈得具体一点就是 比如:我们之前的SMBMS系统,它可以打成一个war包放在tomcat中跑,它一个war包中聚集了所有资源(JSP,CSS,JS)和功能(订单模块,供应商模块,用户模块等等)。

1.1 单体架构优缺点对比

优点:

1、架构目录简单清楚。

2、开发测试部署也简单

缺点:

1、业务越多,代码越复杂。

2、系统业务越来越多,一次性部署的速度就会变慢

3、系统扩展成本高,我们无法对单个功能模块进行扩展

二、什么是微服务?

微 => 小 => 功能单一的服务

微服务强调的是 服务的大小 和 对外提供的单一功能,一个模块就做一件事情!

三、什么是微服务架构

微服务架构的 核心就是 将单一的应用程序划分成一组小的服务 , 也就是模块化

(根据业务模块 划分成一个个具体的服务,每一个服务提供特定的功能,一个服务只做一件事)。
而每个服务运行在自己的进程内,服务之间相互协调,互相配置。
每个服务围绕着具体的业务进行构建,并独立部署到生产环境中。

四、微服务的优缺点分析

4-1、微服务优点:

  • 单一职责原则,一个服务完成一项业务功能
  • 开发简单,效率提高,松耦合,无论在哪个阶段,每个服务都是独立的,不会相互影响
  • 每个服务可以使用不同的语言进行开发
  • 易于第三方系统集成
  • 微服务易于修改和维护
  • 微服务中只是业务逻辑代码,没有前端的页面样式等等
  • 每个服务都有自己的存储能力,有自己的数据库,也可以有统一的数据库

4-2、微服务缺点:

  • 开发人员要处理分布式系统的复杂性
  • 多服务运维难度,随着服务的增加,运维的压力也变大
  • 系统部署依赖
  • 服务间的通信成本变高
  • 数据一致性
  • 系统集成测试变复杂
  • 性能监控难度增大

五、微服务技术栈有哪些?

微服务条目 使用技术
服务开发 SpringBoot,Spring,SpringMVC
服务配置与管理 Netflix公司的Archaius、阿里的Diamond等等
服务注册与发现 Eureka、Consul、Zookeeper等等
服务调用 Rest、PRC、gRPC
服务熔断器 Hystrix、Envoy等等
负载均衡 Ribbon、Niginx等等
服务接口调用 Feign等等
消息队列 Kafka、RabbitMQ、ActiveMQ等等
服务配置中心管理 SpringCloudConfig、Chef等等
全链路追踪 Zipkin、Brave、Dapper等等
服务部署 Docker、OpenStack、Kubernetes等等
数据流操作开发包 SpringCloud Stream
事件消息总线 SpringCloud Bus

六、为什么要选择SpringCloud作为微服务架构

6-1、选型依据

  • 整体解决方案和框架成熟度
  • 社区热度
  • 可维护性

当前主流的微服务架构有哪些?

:SpringCloud、ServiceComb、ZeroC ICE、Motan、Thrift

  • 阿里巴巴:dubbo+HFS
  • 新浪:Montan
  • 京东:JSF
  • Spring Cloud是一系列框架的有序集合。
    Spring Cloud 利用 Spring Boot 特性整合了开源行业中优秀的组件,整体对外提供了一套在微服务架构中服务治理的解决方案。

  • Apache ServiceComb 是第一个Apache微服务项目, 是一个开源微服务解决方案,实现对微服务应用的高效运维管理。提供一站式开源微服务解决方案并支持多语言。

  • ZeroC IceGrid 是面向对象的分布式系统中间件。基于RPC框架具有良好的性能与分布式能力。

  • Motan 是开源的 RPC 框架,只支持 Java 语言实现,需要在 Client 端(服务消费者)和 Server 端(服务提供者)引入 SDK。

  • Thrift 是一种轻量级的跨语言 RPC 通信方案,支持多达 25 种编程语言。Thrift有一套自己的接口定义语言 IDL。

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号