Spring Cloud

微服务时代之网关相关技术选型及部署(nacos+gateway)

僤鯓⒐⒋嵵緔 提交于 2020-04-23 07:24:14
1.场景描述 因要用到微服务,关于注册中心这块,与同事在技术原型上做了讨论,初步定的方案是使用:阿里巴巴的nacos+springcloud gateway,下面表格是同事整理的注册中心对比,以前用的springcloud的eureka作为注册中心( springcloud-高可用部署 ),与eurka相比,这次之所以用阿里的nacos,其中还有一个主要的原因就是nacos集成了动态加载,不用重启网关,动态加载服务配置等。 注册中心对比: Feature Zookeeper Eureka Consul Etcd Nacos 服务健康检查 (弱)长连接,keepalive 可配支持 服务状态,内存,硬盘等 连接心跳 心跳/自定义 多数据中心 — — 支持 — 支持 kv存储服务 支持 — 支持 支持 支持 一致性 paxos — raft raft raft CAP定理 CA AP CA CP AP 使用接口(多语言能力) 客户端 http(sidecar) 支持http和dns http/grpc dns/http/rpc watch支持 支持 支持 long polling/大部分增量 全量/支持long polling 支持 long polling 全量/支持long polling 自身监控 — metrics metrics metrics metrics 安全 acl

进军2020年:Java研发岗千道面试题总结:MyBatis+Redis+Spring...

巧了我就是萌 提交于 2020-04-23 06:02:40
互联网 Java 工程师面试题 MyBatis(27道) ZooKeeper(28道) Dubbo(30道) Elasticsearch(24道) Memcached(23道) Redis(40道) MySQL(50道) Java 并发编程(一)Java 并发编程(二)(123道) Java面试题(一)Java面试题(二)(228道) Spring 面试题(一)Spring 面试题(二)(119道) 微服务(50道) Linux(45道) Spring Boot(22道) Spring Cloud(8道) RabbitMQ(12道) kafka(18道) 由于内容太过全面,所有这里只截取出部分题目粗略的介绍一下. 这份PDF文档有将近500页,另外也有配套的283页“Java核心知识笔记”. 相信足够各位Java同僚备战刷题了,需要完整“互联网 Java 工程师面试题”及“Java核心知识笔记”的可以直接文末获取: MyBatis(27道) 什么是 Mybatis? Mybaits 的优点 MyBatis 框架的缺点 MyBatis 框架适用场合 MyBatis 与 Hibernate 有哪些不同? {}和${}的区别是什么? 当实体类中的属性名和表中的字段名不一样 ,怎么办 ? 模糊查询 like 语句该怎么写? 通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应,请问

斗胆推荐一款刚出的微服务网关

半城伤御伤魂 提交于 2020-04-23 05:54:49
前言 使用 API 网关作为内部服务面向客户端的单一入口,是一种普遍采用的架构模式。企业组织通过良好定义的 API 将内部系统向内部和外部用户公开,通常都会采用 API 网关来处理横向的关注点,包括访问控制、速率限制、负载均衡等等,来实现安全可控的 API 开放。而被广泛实践的微服务架构在提供高度灵活性和弹性的同时,也给 API 网关带来了更多的挑战。 阿里云云服务总线(Cloud Service Bus)新推出微服务网关服务(CSB Micro Gateway),针对微服务架构下 API 开放的特点,提供能与微服务环境的治理策略无缝衔接的网关服务,实现高效的微服务 API 开放。 API 网关的作用 API 网关典型作用 相信许多人都熟悉 API 网关的概念。作为内部服务面向客户端的单一入口,API 网关有两个最典型的作用: 1、内外解耦:对客户端屏蔽内部服务的动态多样化实现细节,如技术框架、拆分粒度、接口结构、实例状态等 2、切面控制:让内部服务能专注在业务逻辑上,集中处理横向的关注点,如路由、安全、限流、日志、监控等 API 网关使用类型 实际使用中,对应 API 网关所在位置和针对场景的不同,可分成两种类型: 1、企业级网关:位于企业组织的外围,面对外部的 API 消费者或服务提供者。通常将企业自身的数据和能力 API 化,对外开放,也有允许外部服务入驻的情况。总的来说

8张图带你轻松温习 Java 知识.md

痴心易碎 提交于 2020-04-23 04:49:51
一图胜千言,下面图解均来自Program Creek 网站,目前它们拥有最多的票选。 如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。 1 字符串不变性 下面这张图展示了这段代码做了什么 [code ]String s = "abcd"; s = s.concat("ef");[/code] 2 equals()方法、hashCode()方法的区别 HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在于: 如果两个对象相等(equal),那么他们一定有相同的哈希值。 如果两个对象的哈希值相同,但他们未必相等(equal)。 3 Java异常类的层次结构 图中红色部分为受检查异常。它们必须被捕获,或者在函数中声明为抛出该异常。 4 集合类的层次结构 注意Collections和Collection的区别。(Collections包含有各种有关集合操作的静态多态方法) 5 Java同步 Java同步机制可通过类比建筑物来阐明。 6 别名 别名意味着有多个变量指向同一可被更新的内存块,这些别名分别是不同的对象类型。 7 堆和栈 图解表明了方法和对象在运行时内存中的位置。 8 Java虚拟机运行时数据区域 图解展示了整个虚拟机运行时数据区域的情况。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2.

300 行代码带你搞懂 Java 多线程!

青春壹個敷衍的年華 提交于 2020-04-23 04:42:20
作者:永远在路上 https://blog.csdn.net/weixin_44104367/article/details/104481510 线程 线程的概念,百度是这样解释的: 线程(英语:Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 在Unix System V及SunOS中也被称为轻量进程(Lightweight Processes),但轻量进程更多指内核线程(Kernel Thread),而把用户线程(User Thread)称为线程。 1.1 线程与进程的区别 进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。 线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。 也就是,进程可以包含多个线程,而线程是程序执行的最小单位。推荐看下这篇: 通俗易懂的理解进程与线程 。 1.2 线程的状态 NEW:线程刚创建 RUNNABLE: 在JVM中正在运行的线程,其中运行状态可以有运行中RUNNING和READY两种状态,由系统调度进行状态改变。 BLOCKED:线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行 WAITING

在 IntelliJ IDEA 中使用 Git,太方便了!.md

佐手、 提交于 2020-04-23 01:50:38
作者:J'KYO cnblogs.com/pejsidney/p/9199115.html git是目前流行的分布式版本管理系统。它拥有两套版本库,本地库和远程库,在不进行合并和删除之类的操作时这两套版本库互不影响。也 因此其近乎所有的操作都是本地执行,所以在断网的情况下任然可以提交代码,切换分支。git又使用了SHA-1哈希算法确保了在文件传输时变得不完整、磁盘损坏导致数据丢失时能立即察觉到。 git的基本工作流程: git clone:将远程的Master分支代码克隆到本地仓库 git checkout:切出分支出来开发 git add:将文件加入库跟踪区 git commit:将库跟踪区改变的代码提交到本地代码库中 git push:将本地仓库中的代码提交到远程仓库 git 分支 主分支 master分支:存放随时可供生产环境中的部署的代码 develop分支:存放当前最新开发成果的分支,当代码足够稳定时可以合并到master分支上去。 辅助分支 feature分支:开发新功能使用,最终合并到develop分支或抛弃掉 release分支:做小的缺陷修正、准备发布版本所需的各项说明信息 hotfix分支:代码的紧急修复工作 2、git在IntelliJ IDEA下的使用 2.1、IntelliJ IDEA下配置git 本地安装好git,并配置合理的SSH key,具体看这里:

图解 Spring:HTTP 请求的处理流程与机制【1】

依然范特西╮ 提交于 2020-04-23 01:26:15
2003 年,老兵哥初到中兴开始研究生实习,Spring 就是那年诞生的,2004 年 3 月发布了 1.0 版本,到现在已经超过 15 年了。从单体式分层架构到云原生微服务架构,它稳坐在 JAVA 应用框架的头把交椅上从未被撼动,它给我们带来了巨大的价值,不仅可以降低开发难度,同时还可以提升开发效率。但时间这把杀猪刀不仅改变了老兵哥,也同样没放过 Spring,我们都变得越来越强大了。 在 Spring Boot / Spring Cloud 面世之前,它已经演进了 5 个大版本和无数小版本,功能和生态都变得越来越丰富。但对初涉 Spring 的小伙伴们来说,这就不太公平了,不像老兵哥可以伴着它慢慢成长,现在这套技术栈已经很庞大了,短时间内吃透这个巨无霸,有没有捷径可走呢?有,就像当年 DOS 操作系统一张软盘就装下了,总共才几 MB,现在动不动就几十上百 GB,但操作系统内核是很小的,其原理机制就是教科书上那些,一生二、二生三、三生万物,唯有掌握这些稳定不变的“一二三”,即核心原理机制(例如:IOC \ AOP \ ORM 等),那我们的学习就可以达到事半功倍了。 就像我们购买了毛坯房,入住前必须装修一番,其中水、电、气、网等管路的布线必须先行,不同管路有不同的走法,有的走地板,有的走墙面,等管路都铺设妥当了才能铺地砖、吊天花、刷墙贴纸等。作为业主,如果你不知道这些管路的走线

8张图带你轻松温习 Java 知识.md

你说的曾经没有我的故事 提交于 2020-04-22 17:07:22
一图胜千言,下面图解均来自Program Creek 网站,目前它们拥有最多的票选。 如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟。 1 字符串不变性 下面这张图展示了这段代码做了什么 [code ]String s = "abcd"; s = s.concat("ef");[/code] 2 equals()方法、hashCode()方法的区别 HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在于: 如果两个对象相等(equal),那么他们一定有相同的哈希值。 如果两个对象的哈希值相同,但他们未必相等(equal)。 3 Java异常类的层次结构 图中红色部分为受检查异常。它们必须被捕获,或者在函数中声明为抛出该异常。 4 集合类的层次结构 注意Collections和Collection的区别。(Collections包含有各种有关集合操作的静态多态方法) 5 Java同步 Java同步机制可通过类比建筑物来阐明。 6 别名 别名意味着有多个变量指向同一可被更新的内存块,这些别名分别是不同的对象类型。 7 堆和栈 图解表明了方法和对象在运行时内存中的位置。 8 Java虚拟机运行时数据区域 图解展示了整个虚拟机运行时数据区域的情况。 推荐去我的博客阅读更多: 1. Java JVM、集合、多线程、新特性系列教程 2.

SpringCloud(一)浅谈SpringCloud

旧街凉风 提交于 2020-04-22 10:50:44
前言 现在微服务实在是太火了,所以我们必不可少的是要学习一下SpringCloud了,服务化的核心就是将传统的一站式应用 根据业务拆分成一个一个的服务,而微服务在这个基础上要更彻底地去耦合(不再共享DB、KV,去掉重量级ESB),并 且强调DevOps和快速演化。 springcloud中常用的组件: 服务发现——Netflix Eureka 客户端负载均衡——Netflix Ribbon 断路器——Netflix Hystrix 服务网关——Netflix Zuul 分布式配置——Spring Cloud Config 一、SpringCloud的架构设计 1.1 SpringCloud架构图细解 上面的SpirngCloud的架构图,分层概述一下。 web服务器的选型,这个我选择的是nginx+keepalived,haproxy也是一个选择,但是haproxy在反向代理处理跨域 访问的时候问题很多。所以我们nginx有些地方做了keep-alive模式处理,减少了三次握手的次数,提高了连接效率。 keepalived做nginx的负载,虚拟一个vip对外,两个nginx做高可用,nginx本身反向代理zuul集群。 api gateway,这里的zuul很多人诟病,说是速度慢推荐直接用nginx,这里我还是推荐使用zuul的,毕竟zuul含有 拦截器和反向代理,在权限管理

SpringCloud-初识微服务(一)

a 夏天 提交于 2020-04-22 03:30:55
前言   本篇文章简单介绍一下什么是微服务、微服务的优点、SpringCloud的微服务架构核心组件选型等; 一、什么是微服务?   微服务的提出者 Martin Fowler 是这样描述微服务的(原文: https://martinfowler.com/articles/microservices.html ): In short , the microservice architectural style [ 1 ] is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which