微服务概述

之前马丁的文章

微服务优缺点

微服务优点:

  • 单一职责
  • 服务内聚,足够小,代码容易理解,聚焦单一业务功能需求
  • 松耦合,开发阶段部署阶段都是独立的
  • 能使用不同的语言开发,因为基于轻量级通信
  • 易于第三方集成,微服务容易灵活部署,持续集成工具:jenkins、Hudson、bamboo
  • 容易理解修改维护
  • 只是业务逻辑代码
  • 每个微服务都有自己的存储能力,可用有自己的数据库,或使用统一数据库

缺点:

  • 要处理分布式系统的复杂性
  • 多服务运维难
  • 系统部署依赖
  • 服务间通信成本
  • 数据一致性
  • 系统集成测试
  • 性能监控。。。

微服务技术栈:

  • 服务开发
  • spring
  • springMVC
  • springBoot
  • 服务配置与管理
  • 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等
  • 数据流操作开发包
  • SpringCloudStream(封装Redis,Rebbit,Kafka等发送接收消息)
  • 事件消息总线
  • SpringCloud Bus

SpringCloud和SpringBoot关系

  • SpringBoot专注于开发单个个体微服务,打成jar包
  • SpringCloud将SpringBoot开发的单体服务整合起来
  • 为服务之间提供配置管理、服务发现、断路由、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务
  • SpringCloud无法离开SpringBoot
  • SpringCloud关注全局的服务治理框架

Dubbo和SpringCloud技术选型

微服务性能测试实战 微服务 性能_java

现在开发流程

  • CDN加速器
  • 负载均衡可能有很多层,LVS 、Nginx,负载均衡可水平拆分,多个Lvs多个Nignx
  • 服务一般以集群的样子,Nginx在负载一个个的服务器Tomcat
  • 服务要跟文件系统打交道,分布式文件系统 ,xxxDFS,文件服务器要对分布式文件系统读写,所以是双向箭头
  • Tomcat要去注册中心获取服务
  • 获取服务需要有服务提供者,dubbo-admin注册服务到注册中心
  • 服务者后面可能有多个数据库,数据库容量不足可能水平拆分,要实现读写分离可能要垂直拆分,读和写分成两部分数据库进行工作
  • 读写分离之间需要数据同步,MyCat做数据同步,保证数据的一致性
  • 读数据要水平扩展,写数据需要垂直扩展
  • 服务提供者连接数据库需要一些缓存机制,将数据放入非关系型数据库Redis,以K-V键值对的形式,Redis还能做集群
  • 搜索引擎来优化 ElasticSerach
  • 提供者到缓存还需要消息中间件,队列机制,异步机制,消息在排队等着,处理完成就将消息返回

微服务性能测试实战 微服务 性能_微服务性能测试实战_02

Dubbo中间停滞了一段时间,SpringCloud更加的完善,SpringCloud牺牲了服务调用的性能,避免了原生RPC带来的问题,而且Rest比RPC更加灵活,服务提供者和消费者之间一纸契约,不存在代码级别的强依赖,在微服务环境下更加合适

SpringCloud做大最大兼容性,保证了稳定性,但是Dubbo的自由度更高,但是需要更高的技术人员

如何自学:

Spring Cloud Netflix

https://www.springcloud.cc/spring-cloud-config.html

springcloud中文社区

[springCloud中文网站](