一、什么是微服务
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,最近在面试的朋友或者在找工作的可以进来看看哦!
原文出处: