SpringCloud学习笔记:微服务和SpringCloud是什么?

一、什么是微服务

1、马丁福勒对微服务的概述:微服务架构一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组组小的服务,每个服务运行在其独立的进程中,服务之间相互协作、相互配合,为用户提供最终价值。服务之间采用轻量级的通讯机制互相沟通(通常是基于Http和RESful API)。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据储存。

2、技术维度理解:微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是小而独立的处理过程,类似进程概念,能够自行独立启动或者销毁,拥有自己独立的数据库

3、微服务与微服务架构

微服务:强调的是服务的大小,它关注的是某一个点,是具体解决某一个问题、提供落地的对应服务的一个服务应用,它具体是使用SpringCloud开发的一个小模块,专业的事情交给专业的模块来做,一个模块制作一个事情。

微服务架构:微服务架构一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程中,服务之间相互协作、相互配合,为用户提供最终价值。强调的是多个微服务形成的一个对外的整体。

二、微服务的优缺点分别是什么?

优点:

1.每个服务足够内聚,足够小,代码容易理解这样能聚焦一个指定的业务功能或业务需求

2.开发简单、开发效率高,一个服务可能就是注意的只做一件事情

3.微服务能够被小团队单独开发,2到5个人的开发人组成

4.微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的

5.微服务能使用不同的语言开发

6.易于和第三方集成,微服务允许容易且灵活的方式集成自动部署

7.微服务容易被一个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果

8.微服务只是业务逻辑的代码,不会和HTML,css或其他界面组件混合

9.每个微服务可以有自己独立的数据库,也可以有统一的数据库

缺点:

1.开发人员要处理分布式系统的复杂性

2.多服务运维难度,随着服务的增加,运维的压力也在增大

3.系统部署依赖

4.服务间通信成本

5.数据一致性

6.系统集成测试

7.性能监控

三、微服务技术栈有哪些**

服务开发:springboot、spring、springMVC

服务配置与管理:Netflix公司的Archaius、阿里的Diamond

服务注册与发现:Eureka、Consul、zookeeper

服务调用:Rest、RPC、gRPC

服务熔断器:Hystrix、Envoy

服务负载均衡:Ribbon、Nginx

服务接口调用(客户端调用服务的简化工具):Feign

消息队列:Kaka、RabbitMq、ActiveMq

服务配置中心管理:SpringCloudConfig、Chef

服务路由(api网关):Zuul

服务监控:Zabbix、Nagios、Metrics、Spectator

全链路追踪:Zipkin,Brave、Dapper

服务部署:Docker、OpenStack、Dapper

数据流操作开发包:SpringCloud Stream(封装与Redis、Rabbit、kafka等发送接收消息)

事件消息总线:SpringCloud Bus

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

1、选型依据:

整体解决方案和框架成熟度

社区热度

可维护性

学习曲线

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

阿里Dubbo/HSF(好舒服)

京东JSF(京舒服)

新浪微博Motan(茅台)

当当网DubboX

3、各微服务架构对比:

一个微服务应满足微服务架构各维度需求,并且看重如何满足。

五、springCloud是什么

1、分布式系统的简化版: 构建分布式系统不需要复杂且容易出错。SpringCloud为最常见的分布式系统模式提供了简单易用的编程模型,帮助开发人员构建弹性,可靠和协调的应用程序。SpringCloud构建于SpringBoot之上,使开发人员可以轻松入门并快速提高工作效率。(摘自spring官网)

2、springCloud,基于springBoot提供了一套微服务解决方案,包括服务注册与发现、配置中心、全链路监控、服务网关、负载均衡、熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。

3、SpringCloud利用springboot的开发便利性巧妙的简化了分布式系统基础设施的开发,SpringCloud为开发人员提供了快速搭建分布式系统的一些工具,包括配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等,他们都可以用springBoot的开发风格做到一件启动和部署。

4、springCloud=分布式微服务架构下的一站式解决方案,是各个微服务架构落地技术的集合体,俗称微服务全家桶。

为了帮助大家少走弯路,我请BAT大厂工作的同事总结出一套技术视频,涵盖Java工程化、高性能及分布式、性能调优、Spring、Netty源码分析和大数据等知识点,想要了解详情的可以加入Java后端技术群:819940388,免费的大型互联网Java技术视频分享给大家。其实我自己也比较喜欢技术,群里有一些阿里大牛,也有一线互联网的资深HR,最近在面试的朋友或者在找工作的可以进来看看哦!

六、springCloud和springBoot是什么关系

1、springCloud关注宏观 依赖于springboot 关注全局的微服务协调治理框架

2、SpringBoot关注微观 可以独立使用 专注于快速方便的开发单个个体微服务

七、SpringCloud和Dubbo有哪些区别 哪些优缺点可以技术选型

最大区别:SpringCloud抛弃了Dubbo的RPC通信,采用的是局域HTTP的REST方式

dubbo的定位是RPC框架,而SpringCloud的目标是微服务框架下的一站式解决方案,dubbo可以类比到Netflixoss技术栈,而SpringCloud集成了NetflixOss作为分布式服务治理解决方案,但除此之外springCloud还提供了包括config、stream、security、sleuth等等分布式问题解决方案。

随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大。那么,作为一名Java程序员,怎样努力才能快速成长为一名高级的程序员或者架构师,或者说一名优秀的高级架构师应该有怎样的技术知识体系,这不仅是一个刚刚踏入职场的初级程序员,也是工作三五年之后开始迷茫的老程序员,都必须要面对和想明白的问题。大家可以通过扫码进群下载资料,其实我自己也比较喜欢技术,群里有一些阿里大牛,也有一线互联网的资深HR,最近在面试的朋友或者在找工作的可以进来看看哦!

原文出处:blog.csdn.net/qq_42894896…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值