SpringCloud-Netflix学习笔记——微服务和微服务架构

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、什么是微服务

  什么是微服务微服务Microservice Architecture是近几年流行的一种架构思想关于它的概念很
难一言以蔽之。究竟什么是微服务呢我们在此引用 ThoughtWorks 公司的首席科学家 Martin Fowler
于2014年提出的一段话

  原文https://martinfowler.com/articles/microservices.html
  汉化https://www.cnblogs.com/liuning8023/p/4493156.html

  就目前而言对于微服务业界并没有一个统一的标准的定义。但通常而言微服务架构是一种架构模式或者说是一种架构风格 它提倡将单一的应用程序划分成一组小的服务每个服务运行在其独立的自己的进程内服务之间互相协调互相配置为用户提供最终价值。服务之间采用轻量级的通信机制互相沟通每个服务都围绕着具体的业务进行构建并且能够被独立的部署到生产环境中另外应尽量避免统一的集中式的服务管理机制对具体的一个服务而言应根据业务上下文选择合适的语言工具对其进行构建可以有一个非常轻量级的集中式管理来协调这些服务可以使用不同的语言来编写服务也可以使用不同的数据存储

  可能有的人觉得官方的话太过生涩我们从技术维度来理解下微服务化的核心就是将传统的一站式应用根据业务拆分成一个一个的服务彻底地去耦合每一个微服务提供单个业务功能的服务一个服务做一件事情从技术角度看就是一种小而独立的处理过程类似进程的概念能够自行单独启动或销毁拥有自己独立的数据库。

二、微服务与微服务架构

1、微服务

  强调的是服务的大小他关注的是某一个点是具体解决某一个问题/提供落地对应服务的一个服务应
用狭义的看可以看做是IDEA中的一个个微服务工程或者Moudel

2、微服务架构

  一种新的架构形式Martin Fowler2014提出

  微服务架构是一种架构模式它提倡将单一应用程序划分成一组小的服务服务之间互相协调互相配
合为用户提供最终价值。每个服务运行在其独立的进程中服务于服务间采用轻量级的通信机制互相
协作每个服务都围绕着具体的业务进行构建并且能够被独立的部署到生产环境中另外应尽量避
免统一的集中式的服务管理机制对具体的一个服务而言应根据业务上下文选择合适的语言工
具对其进行构建。

三、微服务优缺点

1、优点

  • 每个服务足够内聚足够小代码容易理解这样能聚焦一个指定的业务功能或业务需求
  • 开发简单开发效率提高一个服务可能就是专一的只干一件事
  • 微服务能够被小团队单独开发这个小团队是2~5人的开发人员组成
  • 微服务是松耦合的是有功能意义的服务无论是在开发阶段或部署阶段都是独立的。
  • 微服务能使用不同的语言开发。
  • 易于和第三方集成微服务允许容易且灵活的方式集成自动部署通过持续集成工具如jenkins
    Hudsonbamboo
  • 微服务易于被一个开发人员理解修改和维护这样小团队能够更关注自己的工作成果。无需通过
    合作才能体现价值。
  • 微服务允许你利用融合最新技术。
  • 微服务只是业务逻辑的代码不会和 HTML CSS 或其他界面混合
  • 每个微服务都有自己的存储能力可以有自己的数据库也可以有统一数据库

2、缺点

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

四、微服务技术栈有哪些

微服务条目落地技术
服务开发SpringBoot,Spring,SpringMVC
服务配置与管理Netflix公司的Archaius、阿里的Diamond等
服务注册与发现Eureka、Consul、Zookeeper等
服务调用Rest、RPC、gRPC
服务熔断器Hystrix、Envoy等
负载均衡Ribbon、Nginx等
服务接口调用客户端调用服务的简化工具Feign等
消息队列Kafka、RabbitMQ、ActiveMQ等
服务配置中心管理SpringCloudConfig、Chef等
服务路由API网关Zuul等
服务监控Zabbix、Nagios、Metrics、Specatator等
全链路追踪Zipkin、Brave、Dapper等
服务部署Docker、OpenStack、Kubernetes等
数据流操作开发包SpringCloud Stream(封装与RedisRabbitKafka等发送接收消息)
事件消息总线SpringCloud Bus

Spring Cloud Alibaba

在这里插入图片描述

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

1、选型依据

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

2、当前各大IT公司用的微服务架构有哪些

  • 阿里dubbo+HFS
  • 京东JSF
  • 新浪Motan
  • 当当网 DubboX
  • … … …

3、各微服务框架对比

功能点/服务框架Netflix/SpringCloudMotangRPCThriftDubbo/DubboX
功能定位完整的微服务框架RPC框架但整合了ZK或Consul实现集群环境的基本服务注册/发现RPC框架RPC框架服务框架
支持Rest是Ribbon支持多种可插拔的序列化选择
支持RPC是Hession2
支持多语言是Rest形式
负载均衡是服务端zuul+客户端Ribbonzuul-服务动态路由云端负载均衡Eureka针对中间层服务器是客户端是客户端
配置服务Netfix ArchaiusSpringCloud Config Server集中配置是zookeeper提供
服务调用链监控是zuulzuul提供边缘服务API网关
高可用/容错是服务端Hystrix+客户端Ribbon是客户端是客户端
典型应用案例NetflixSinaGoogleFacebook
社区活跃程度一般一般2017年后重新开始维护之前中断了5年
学习难度中断
文档丰富程度一般一般一般
其他Spring Cloud Bus为我们的应用程序带来了更多管理端点支持降级Netflix内部在开发集成gRPCIDL定义实践的公司比较多
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Spring