[微服务] microservice(1) 之认识微服务架构

为什么需要微服务架构

1.传统单体应用架构的问题
我们通常所使用的传统单体应用架构都是模块化的设计逻辑,程序在编写完成后会被打包并部署为一个具体的应用,而应用的格式则依赖于相应的应用语言和框架。例如,在网上商城系统中,Java Web工程通常会被打成WAR包部署在Web服务器上,而普通Java工程会以JAR包的形式包含在WAR包中。
在这里插入图片描述
图中的这种应用开发风格很常见,它易于开发和调试,并且易于部署。在用户量不多时,此种架构方式完全可以满足需求,但随着用户人数的增多,一台机器已经满足不了系统的负载,此时我们就会考虑系统的水平扩展。通常情况下,我们只需要增加服务器数量,并将打包好的应用拷贝到不同的服务器(如Tomcat),然后通过负载均衡就可以轻松实现应用的水平扩展。
在早期,单体架构的这种扩展方式可以很好的满足使用需求,但随着时间的推移,这种方式就会产生很多问题,具体表现如下。

1.应用复杂度增加,更新、维护困难
2.易造成系统资源浪费
3.影响开发效率
4.应用开发效率
5.不利于技术的更新

2.如何解决传统应用架构的问题
针对传统单体架构的问题,大部分企业通过SOA(Service-Oriented Architecture,面向服务的架构)来解决上述问题。SOA的思路是把应用中相近的功能聚合到一起,以服务的形式提供出去,因此基于SOA架构的应用可以理解为一批服务的组合。
在这里插入图片描述
使用SOA可以将系统切分成多个组件服务,这种通过多个组件服务来完成请求的方式有很多好处,具体如下。

·把项目拆分若干个子项目,不同的团队可以负责不同的子项目,从而提高开发效率。
·把模板拆分,使用接口通信,降低了模块之间的耦合度。
·为企业的现有资源带来了更好的重用性。
·能够在最新的和现有的应用之上创建应用。
·能够使客户或服务消费者免予服务实现的改变所带来的影响。
·能够升级单个服务或服务消费者而无需重写整个应用,也无需保留已经不再适用于新需求的现有系统。

虽然使用SOA解决了单体架构中的问题,但多数情况下,SOA中相互独立的服务仍然会部署在同一个运行环境中。和单体架构类似,随着业务的增加,SOA的服务会变得越来越复杂。本质上,单体架构的问题并没有因为使用SOA而变得更好。

微服务架构是什么

1.微服务架构的概念
微服务架构是一种架构风格和架构思想,它倡导我们在传统软件应用架构的基础上,将系统业务按照功能拆分为更加细粒度的服务,所拆分的每一个服务都是一个独立的应用,这些应用对外提供公共的API,可以对外独立承担职责,通过此种思想方式所开发的软件服务实体就是“微服务”,而围绕着微服务思想构建的一系列体系结构,我们可以将之称为“微服务架构”。
在这里插入图片描述
2.微服务架构的优点

1.复杂度可控
2.可独立部署
3.技术选型灵活
4.易于容错
5.易于扩展
6.功能特定

3.微服务架构的不足

1.开发人员必须处理创建分布式系统的复杂度
2.部署的复杂度
3.增加内存消耗

4.微服务架构和SOA的区别

微服务架构SOA
一个系统被拆分成多个服务,细粒度服务由多个子系统组成,粗粒度
团队级,自底向上开展实施企业级,自顶向下
无集中式总线,松散的服务架构企业级服务总线,集中式的服务架构
集成方式简单集成方式复杂
服务能独立部署服务互相依赖,无法独立部署

5.微服务架构的技术选型

1.微服务实例的开发:Spring Boot、WildFly
2.服务的注册与发现:Spring Cloud Eureka、Apache zookeeper、Consul、Etcd、Dubbo等
3.负载均衡:Spring Cloud Ribbon、Dubbo
4.服务容错:Hystrix
5.API网关:Spring Cloud Zuul、Spring Reactor、Netty、NodeJS等
6.分布式配置中心:Spring Cloud Config
7.调试:Swagger
8.部署:Docker
9.持续集成:Jenkins

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值