微服务技术概述

微服务架构风格上是一种使用一套小服务来开发单个应用的方式途径,每个服务运行在自己的进程中,并使用轻量级机制通信,通常是 HTTP API,这些服务基于业务能力构建,并能够通过自动化部署机制来独立部署,这些服务使用不同的编程语言实现,以及不同数据存储技术,并保持最低限度的集中式管理。

微服务优势

(1)微服务每个模块就相当于一个单独的项目,代码量明显减少,遇到问题也相对来说比较好解决。

(2)微服务每个模块都可以使用不同的存储方式(比如有的用 redis,有的用 mysql等),数据库也是单个模块对应自己的数据库。

(3)微服务每个模块都可以使用不同的开发技术,开发模式更灵活。

微服务本质

(1)微服务,关键其实不仅仅是微服务本身,而是系统要提供一套基础的架构,这种架构使得微服务可以独立的部署、运行、升级,不仅如此,这个系统架构还让微服务与微服务之间在结构上“松耦合”,而在功能上则表现为一个统一的整体。这种所谓的“统一的整体”表现出来的是统一风格的界面,统一的权限管理,统一的安全策略,统一的上线过程,统一的日志和审计方法,统一的调度方式,统一的访问入口等等。

(2)微服务的目的是有效的拆分应用,实现敏捷开发和部署。

回顾 Spring 发展史

2002年,Rod Johnson 开发的框架Spring,他成立了一个公司运营这玩意,当时公司叫 interface 21;

2008 年更名为 springsource,由于 spring 本身免费,所以公司主要做培训和付费咨询。同年进行了一轮收购,拉拢了 tomcat、apache、groovy 社区的大神加入;

2009年 vmware 花了4.8亿收购了springsource;

2010年3月,Rod Johnson 收购了 redis ;同年4月份 rabbitmq 也被收入囊中;

在这轮收购中,还有一个公司叫 GemStone,他是 Gemfire(一个分布式内存存储系统,开原版本叫 Geode,目前在 apache 旗下)的研发公司;

2013年,vmware、emc和通用资本 合资成立了一家公司,叫 GoPivotal,三家股权 8:1:1,vmware 还占主导权,这时候 vmware 已经是 EMC 的子公司了,springsource 是一个筹码,做大数据平台;

2013年8月6日,崭新的 privotal 公司发布了 Spring boot 最早的一个版本:v0.5.0.M1;

2014年4月1日,Spring Boot 第一个 release 版本 v1.0.0.RELEASE 发布;

2018年03月01日,发布了足以改变历史的 Spring Boot 2.0.0.RELEASE,这个版本对接 Spring 5.x;

Spring Cloud

Spring Cloud 是构建微服务的核心,而 Spring Cloud 是基于 Spring Boot 来开发的。

Spring Cloud 的核心思想也是基本理论基础是:

Spring Boot \ AutoConfiguration \ 约定优于配置

Spring Cloud 并不是一个框架,也不是一个工具,而是一种规则,一种信仰。

2014年10月07日, privotal 发布了第一个 Spring Cloud 的版本:1.0.0.M1。

2017 年初,Spring Cloud 迭代到 E 版本,对应 SpringBoot 4.x,达到最稳定的状态,各个环节的变化变慢,趋于稳定。

Spring Cloud F 版和 SpringBoot 2.x 是双子星。

Spring Cloud 不同版本

伦敦的 地铁站的 名字进行的命名.所有的字母是从 A–Z 进行的排序迭代更新的

Spring Cloud Netflix

首先,Netflix 是一家做视频的网站,可以这么说该网站上的美剧应该是最火的。

Netflix 是一家没有 CTO 的公司,正是这样的组织架构能使产品与技术无缝的沟通,从而能快速迭代出更优秀的产品。

在当时软件敏捷开发中,Netflix的更新速度不亚于当年的微信后台变更

虽然微信比Netflix迟发展,但是当年微信的灰度发布和敏捷开发应该算是业界最猛的。

Netflix由于做视频的原因,访问量非常的大,从而促使其技术快速的发展在背后支撑着

也正是如此,Netflix开始把整体的系统往微服务上迁移。

Netflix的微服务做的不是最早的,但是确是最大规模的在生产级别微服务的尝试

这种大规模的生产级别尝试,在服务器运维上依托AWS云,

当然AWS云同样受益于Netflix的大规模业务不断的壮大。

Netflix的微服务大规模的应用,在技术上毫无保留的把一整套微服务架构核心技术栈开源了出来,叫做Netflix OSS,也正是如此,在技术上依靠开源社区的力量不断的壮大。

目前Netflix贡献的活跃项目包括:

  • spring-cloud-netflix-eureka
  • spring-cloud-netflix-hystrix
  • spring-cloud-netflix-stream
  • spring-cloud-netflix-archaius
  • spring-cloud-netflix-ribbon
  • spring-cloud-netflix-zuul

Pivotal在Netflix开源的一整套核心技术产品线的同时,做了一系列的封装,就变成了Spring Cloud;虽然Spring Cloud到现在为止不只有Netflix提供的方案可以集成,还有很多方案,但Netflix是最成熟的。

2018年12月12日 ,Netflix 宣布停止开发Spring Cloud的相关服务:Ribbon、Feign、Eureka、Hystrix。

Dubbo

Dubbo是阿里巴巴内部使用的分布式业务框架。

2008 年,阿里巴巴开始内部使用 Dubbo;
2009 年初,发布 1.0 版本;
2010 年初,发布 2.0 版本;
2011 年 10 月,阿里巴巴宣布开源,版本为 2.0.7;
2012 年由阿里巴巴开源;
2012 年 3 月,发布 2.1.0 版本;
2013 年 3 月,发布 2.4.10 版本;
2014 年 10 月,发布 2.3.11 版本,之后版本停滞;
2014 年10月Dubbo停止维护;
2017 年 9 月,阿里巴巴重启维护,重点升级所依赖 JDK 及组件版本,发布 2.5.4/5 版本;
2017 年 10 月,发布 2.5.6 版本;
2017 年 11 月,发布 2.5.7 版本,后期集成 Spring Boot;
2018 年2月,阿里将Dubbo捐献给Apache基金会,Dubbo成为Apache孵化器项目。

模块注解:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。

Spring Cloud Alibaba

在Dubbo停更后,项目组发现Dubbo被广泛使用,就又开始更新了,并捐给了Apache管理。

Spring Cloud 是基于 Spring Boot 设计的一套微服务规范,并增强了应用上下文。

Spring Cloud Alibaba 采用阿里中间件作为基础,实现了 Spring Cloud 的微服务规范。

未来 Dubbo 将会作为 Spring Cloud Alibaba 的 RPC 组件,并与 Spring Cloud 原生的 Feign 以及 RestTemplate 进行无缝整合,不过现在(2019年9月)的Spring Cloud Alibaba现在还在Spring孵化中。

项目孵化期间,使用的groupId为:org.springframework.cloud;

项目孵化之后,使用的groupId修改为了com.alibaba.cloud,所以用户需要注意是否使用正确。

微服务技术开源始末

2012 年,Netflix 公司将 Euerka 正式开源;
2012年由阿里巴巴开源Dubbo;
2014年10月Dubbo停止维护;
2018年 ,Dubbo 活了,并且被 Apache 收了;
同年12月12日 ,Netflix 宣布停止开发Spring Cloud的相关服务:Ribbon、Feign、Eureka、Hystrix。

技术框架对比

熔断器对比


转载请注明来源。 欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。 可以在下面评论区评论,也可以邮件至 sharlot2050@foxmail.com。

文章标题:微服务技术概述

字数:1.9k

本文作者:夏来风

发布时间:2020-01-01, 10:10:19

原始链接:http://www.demo1024.com/blog/java-mservice/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。