推荐一个互联网很火的技术——阿里巴巴微服务架构到底有多牛逼?

  1. 云栖社区>
  2. 博客>
  3. 正文

推荐一个互联网很火的技术——阿里巴巴微服务架构到底有多牛逼?

欧阳愠斐 2018-09-27 16:03:34 浏览935
展开阅读全文

什么是 Spring Boot ?

解释一下:Spring Boot 可以构建一切。Spring Boot 设计之初就是为了最少的配置,最快的速度来启动和运行 Spring 项目。Spring Boot 使用特定的配置来构建生产就绪型的项目。

Spring Boot 的特性:

使用 Spring 项目引导页面可以在几秒构建一个项目

方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks

非常简洁的安全策略集成

支持关系数据库和非关系数据库

支持运行期内嵌容器,如 Tomcat、Jetty

强大的开发包,支持热启动

自动管理依赖

自带应用监控

支持各种 IED,如 IntelliJ IDEA、NetBeans

为什么学 Spring Boot

通过谷歌趋势来看 Spring Boot 在美国的使用情况发现,中国和美国人民使用 Spring Boot 的整体频率保持一致,看来国内技术人同步全球的技术频率越来越快。

Spring Boot 不是为了取代 Spring ,Spring Boot 基于 Spring 开发,是为了让人们更容易的使用 Spring。

Spring Boot 和微服务架构

互联网产品需求变化快,用户群体庞大。在这种情况下,如何构建灵活、易扩展的系统,快速应对需求的变化;并且,如何保证系统的可伸缩性、高可用性,成为系统架构面临的挑战。

开发一个大型而全的系统已经很难满足市场对技术的需求,于是从单独架构发展到分布式架构,又从分布式架构发展到 SOA 架构,服务不断的被拆分和分解,粒度也越来越小,直到微服务架构的诞生。

Spring Boot 的研发融合了微服务架构的理念,实现了在 Java 领域内微服务架构落地的技术支撑。Spring Boot 在开发、测试、部署、运维等方面都做了大量的优化,可以快速响应需求、独立完成开发部署上线。从目前众多的技术栈对比来看 Spring Boot 是 Java 领域微服务架构最优落地技术没有之一。

Spring Boot 的优势

Spring Boot 集成了大量常用的第三方库配置(如 Redis、MongoDB、JPA、RabbitMQ、Quartz 等),几乎可以零配置的开箱即用,使开发者能够更加专注于业务逻辑。

Spring Boot 开发项目的优势

Spring Boot 快速集成各种解决方案提升开发效率。

Spring Boot 使配置变简单,提供了丰富的 Starters,集成主流开源产品只需简单配置。

Spring Boot 使部署变简单,内嵌启动容器,一个命令即可启动项目,结合 Jenkins、Docker 自动化运维非常容易实现。

Spring Boot 使监控变简单,自带监控组件,使用 Actuator 轻松监控服务各项状态。

Spring Boot 就是尽可能的简化应用开发的门槛。解放出更多生产力,让开发人员将精力集中在业务上,而不是各种配置、语法所设置的门槛上。

Spring Boot 所集成的技术栈,几乎都是各互联网公司在使用的技术,想进入或者跳槽互联网公司的技术人可以跟着 Spring Boot 的路线去学习,基本可以了解国内外互联网公司的技术特点。

如果自学能力强可以看书查资料,如果你追求学习效率、想省事,想尽快开始工作实践;我给你推荐一个 Spring Boot 的入门课程,尤其是你这样的入门级程序员,比你自己去搜索、去折腾要有效的多。

你还不知道微服务?那怎么加(zhuang)薪(bi)

推荐一个互联网很火的技术阿里巴巴微服务架构到底有多牛逼?

 

SpringCloud 简介

前言

前段时间参与了公司的技术选型,一方面了解了微服务,另一方面就是了解研究SpringCloud。

小编对于SpringCloud的了解仅算是蜻蜓点水,学习也不是一朝一夕的事情,所以技术选型仅算是为自己以后更多的了解开了个头儿。

本篇对SpringCloud做简单介绍,最后附上整理来的SpringCloud相关技术栈,希望可以对读者有所帮助。

主要内容

微服务架构集大成者,云计算最佳业务实践。——这句话来自SpringCloud中文网。可见SpringCloud的地位还是蛮高的。

概念

关于概念区分这里,可能大家都有听过Spring,也听过SpringBoot,再加上现在提到的SpringCloud,这名字里都带着Spring,是不是有点晕了,莫急莫急,理清思路,我们先看一张图。

推荐一个互联网很火的技术阿里巴巴微服务架构到底有多牛逼?

 

Spring是一个轻量级的Java开发框架,它能使用基本的JavaBean代替EJB。

SpringBoot是由Pivotal团队提供的全新框架,用来简化新Spring应用的初始搭建和开发过程。开发人员无需定义样板化配置。

SpringCloud是一系列框架的有序集合,它把好的东西集合到一起,这就是所谓的集大成者。同时它利用SpringBoot的开发便利性巧妙的简化了分布式系统基础设施的开发。

组成

参考英文官网列举的20个主要项目:

推荐一个互联网很火的技术阿里巴巴微服务架构到底有多牛逼?

 

常用项目简介:

Spring Cloud Config 是配置管理工具包,让你可以把配置放到远程服务器,几种化管理集群配置,目前支持本地存储,Git以及Subversion。

Eureka 云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移。

Hystrix 熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

Zuul 是在云平台上提供动态路由,监控,弹性,安全等边缘服务的框架。Zuul 相当于是设备和 Netflix 流应用的 Web 网站后端所有请求的前门。

Spring Cloud Bus 事件、消息总线,用于在集群(例如,配置变化事件)中传播状态变化,可与Spring Cloud Config联合实现热部署。

Spring Cloud Data Flow 大数据操作工具,作为Spring XD的替代产品,它是一个混合计算模型,结合了流数据与批量数据的处理方式。

优点

SpringCloud很有可能成为未来微服务架构的标准框架。

约定优于配置

开箱即用、快速启动

适用于各种环境

轻量级的组件

组件支持丰富,功能齐全

选型中立

缺点

文档较少,国内研究并不成熟,相对国外较为火热,社区活跃度高。

相关技术栈

推荐一个互联网很火的技术阿里巴巴微服务架构到底有多牛逼?

 

小结

对于SpringCloud的研究认识算是开阔了学习当中的眼界,与之前了解的EJB相比,学习上的宏观认识知识网又在不断的完善。对于SpringCloud的学习

怎么学?

程序员学习交流群:878249276,群里有分享的视频,面试指导,架构资料,还有思维导图、群公告有视频,都是干货的,你可以下载来看。主要分享分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

推荐一个互联网很火的技术阿里巴巴微服务架构到底有多牛逼?

 

Docker简介

什么是Docker?

Docker是一个用于开发、迁移、运行的开发平台。它使你能够将你的应用程序从基础架构中分离,从而可以快速交付。使用Docker,你可以以与管理应用程序相同的方式来管理这些基础架构。使用Docker的方法,进行快速开发,测试,并可以显著的减少编写代码和运行之间的时间延迟。

就像官网上说的:Build,Ship,and Run Any App, Anywhere

Docker平台

Docker平台提供了在容器(松散和隔离性的环境中)中进行应用程序的打包和运行的功能。隔离性和安全性允许你在指定的主机上运行多个容器。容器是轻量级的,因为它们不需要管理程序的额外负载,但是需要在主机的内核中运行。你甚至可以在实际上是虚拟机的主机中运行Docker容器。

Docker提供了工具和平台来管理容器的生命周期:

使用容器开发应用程序及其支持组件

容器成为分发和测试应用程序的单元

当你准备就绪后,将应用程序部署到生产环境中,作为容器或协调服务。无论你的生产环境是本地数据中心,还是云提供商或者是两者的混合,所有的东西都是一样的。

Docker引擎

Docker 引擎是具有以下组件的客户端-服务器应用程序:

一种称为守护进程的长时间运行的程序

一个Rest API,它指定程序可以用来与守护进程通信的接口,并指示它应该做什么

CLI(命令行界面)客户端

CLI使用Rest API来通过脚本或者CLI 命令来控制守护进程,许多Docker程序使用底层的API和CLI。

我们可以用Docker做什么?

快速、一致的交付您的应用程序

Docker通过允许开发人员使用提供应用程序服务的本地容器在标准化的环境中简化开发生命周期。容器适用于连续集成和持续开发(CI/CD)的工作流程。

Docker可以帮助我们完成如下工作:

开发人员再本地编写代码,并使用Docker容器与同事分享他们的工作

使用Docker将其应用程序推送到测试环境,并执行自动和手动测试

当开发人员发现bug时,他们可以将其修复到开发环境中,并将他们重新部署到测试环境中进行测试和验证

测试完成后,向客户解决问题就像将更新的镜像推送到生产环境一样简单。

实时响应部署和扩展

基于容器的Docker平台允许高度便携的工作负载。Docker容器可以在开发人员的笔记本电脑上运行,在数据中心的物理机或者虚拟机上运行,也可以在云提供商或混合的环境中运行。

Docker的便携性和轻量级特性使得轻松实现动态工作负载,按照业务需求,在近乎实时的范围内,扩大或拆除应用程序和服务。

在同一硬件上运行更多的负载

Docker重量轻,快速。它为基于虚拟机管理程序的虚拟机提供了可行的,具有成本效益的替代方案,因此你可以使用更多的计算能力来实现业务目标。Docker是高密度环境和中小型部署的理想选择,你需要使用更少的资源来做更多的事情。

推荐一个互联网很火的技术阿里巴巴微服务架构到底有多牛逼?

 

怎么学?

程序员学习交流群:878249276,群里有分享的视频,面试指导,架构资料,还有思维导图、群公告有视频,都是干货的,你可以下载来看。主要分享分布式架构、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战学习架构师视频。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

网友评论

登录后评论
0/500
评论
欧阳愠斐
+ 关注