微服务

微服务并没有一个官方的定义,可以理解为一种架构风格,将一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。

以往的应用程序开发中,应用程序都是单体型,在开发和部署上比较方便,但是随着业务的不断增加,开发迭代和性能瓶颈等问题都会增加开发难度。微服务正是为解决这一设计问题而应运而生,微服务在将复杂系统切分为数十乃至上百个小服务的同时,这些小服务带来了语言和框架选择上的灵活性,缩短应用开发上线时间,可根据不同的工作负载和资源要求对服务进行独立缩扩容等优势。

优点:

  1. 针对特定服务发布,影响小,风险小,成本低
  2. 频繁发布版本,快速交付需求
  3. 低成本扩容,弹性伸缩,适应云环境
  4. 每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能需求
  5. 开发简单、开发效率高。

缺点:

  1. 开发人员要处理分布式的复杂性
  2. 多服务运维艰难,随着服务的增加,运维的压力也在增大
  3. 系统部署互相依赖
  4. 服务间通信成本
  5. 数据一致性
  6. 系统集成测试
  7. 性能监控

为什么需要微服务架构

  • 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM、ERP等大型应用,随着新需求的不断增加,企业更新和修复大型整体式应用变得越来越困难;

  • 随着移动互联网的发展,企业被迫将其应用迁移至现代化UI界面架构以便能兼容移动设备,这要求企业能实现应用功能的快速上线;

  • 许多企业在SOA投资中得到的回报有限,SOA可以通过标准化服务接口实现能力的重用,但对于快速变化的需求,受到整体式应用的限制,有时候显得力不从心;

  • 随着应用云化的日益普及,生于云端的应用具有与传统IT不同的技术基因和开发运维模式;

此外,从技术方面看,云计算及互联网公司大量开源轻量级技术不停涌现并日渐成熟:

  • 互联网/内联网/网络更加成熟;

  • 轻量级运行时技术的出现(node.js, WAS Liberty等);

  • 新的方法与工具(Agile, DevOps, TDD, CI, XP, Puppet, Chef…);

  • 新的轻量级协议(RESTful API接口, 轻量级消息机制);

  • 简化的基础设施:操作系统虚拟化(hypervisors), 容器化(e.g. Docker), 基础设施即服务 (IaaS), 工作负载虚拟化(Kubernetes,Spark…)等;

  • 服务平台化(PaaS): 云服务平台上具有自动缩放、工作负载管理、SLA 管理、消息机制、缓存、构建管理等各种按需使用的服务;

  • 新的可替代数据持久化模型:如NoSQL, MapReduce, BASE, CQRS等;

  • 标准化代码管理:如Github等。 

任何技术的演进都是有迹可循的,任何新技术的出现都是为了解决原有技术无法解决的需求。

常见的微服务架构技术:

  • SpringBoot:这可能是最好的Java微服务框架了,它适用于控制反转、面向切面编程等等。
  • SpringCloud:特别适合中小型互联网公司开发自己的分布式系统基础设施,从容应对业务发展,大大减少开发成本。
  • Jersey:这个开源框架支持Java的JAX-RS API,使用起来非常容易。
  • Swagger:在为你提供开发门户网页的同时,能帮助你生成API文档,以允许用户测试你的API。
  • Dubbo:阿里巴巴公司开源的一个高性能优秀的分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

微服务技术栈:

  • 维度(springcloud)
  • 服务开发:springboot spring springmvc
  • 服务配置与管理:Netfix公司的Archaiusm ,阿里的Diamond
  • 服务注册与发现:Eureka,Zookeeper
  • 服务调用:Rest RPC gRpc
  • 服务熔断器:Hystrix
  • 服务负载均衡:Ribbon Nginx
  • 服务接口调用:Fegin
  • 消息队列:Kafka Rabbitmq activemq
  • 服务配置中心管理:SpringCloudConfig
  • 服务路由(API网关)Zuul
  • 事件消息总线:SpringCloud Bus

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值