Spring Cloud

深入浅出 Java 类加载机制!

浪子不回头ぞ 提交于 2020-08-06 02:50:03
类加载器 简单讲,类加载器ClassLoader的功能就是负责将class文件加载到jvm内存。 类加载器分类 从虚拟机层面讲分为两大类型的类加载器,一是Bootstrap Classloader即启动类加载器(C++实现),它是虚拟机的一部分,二是其他类型类加载器(JAVA实现),在虚拟机外部,并全部继承ClassLoader类。 从细分的角度讲会分为以下三类类加载器: 1、Bootsrap ClassLoader 启动类加载器,完全由jvm控制加载,外面访问不到这个类加载器,即不能被java程序引用。它主要负责加载jvm自身的工作类,即java/lib目录和-Xbootclasspath参数指定的目录的类库。 2、Extension ClassLoader 扩展类加载器,由java实现,即ExtClassLoader实现类。它主要负责加载java/lib/ext目录和系统环境变量java.ext.dirs指定目录所有类库。 3、Application ClassLoader 应用程序类加载器,由java实现,即AppClassLoader实现类。它的父类是ExtClassLoader,它主要负责加载classpath目录上的类库。如果没有自定义ClassLoader,它就是程序中默认的ClassLoader,即可以通过ClassLoader

Maven Nexus私库搭建及使用,你还不会吗?

谁都会走 提交于 2020-08-06 02:19:28
为什么要使用私库 maven默认去远程中央仓库下载JAR包的,访问国外网络相当慢,如果团队每个人都去下载一遍无疑是网络的浪费,当然也可以添加国内的镜像,如阿里的比较稳定,但如果想添加远程不存在的像第三方公司的JAR包就比较麻烦。 所以,使用私库,第一,开源包只要有一个人下载过其他人就不需要再下载了,直接从私库下载即可。第二,可以用来管理第三方公司的或者远程仓库不存在的JAR包,或者公司不开源的JAR包。 推荐国内稳定的镜像,如阿里的 http://maven.aliyun.com/nexus/content/groups/public/ nexus下载安装 首先去sonatype官网下载nexus包,要下载开源免费版的OSS版,即Open Source Software。 https://www.sonatype.com/nexus-repository-oss 下载最新的3.X的版本,这里以windows为例进行下载。 下载后点击bin目录中的启动文件即可,默认的端口是8081,访问路径是/,也可以去配置文件中修改,这里以默认。 启动后,打开localhost:8081,nexus默认的用户名是admin/admin123 默认安装有以下这几个仓库,在控制台也可以修改远程仓库的地址,第三方仓库等。 Maven配置 修改maven主目录conf/setting.xml配置文件。

云服务和SOA架构以及微服务架构的区别及联系

牧云@^-^@ 提交于 2020-08-06 01:17:03
截止目前,如果之前有看我文章的,关于SSM框架的原理,应该都差不多理解了,毕竟都是看我写过源码的人了,接下来会进入Spring Boot和Spring Cloud的原理,源码解析。在此之前,我们需要了解如下几个概念。云服务、SOA架构、微服务架构。 1、 基于IOC原理,手写SpringIOC源码 2、 基于MVC原理,手写SpringMVC源码 3、 基于连接池和AOP原理,手写MyBatis源码 1.云服务 首先看看百科的介绍:云服务是基于互联网的相关服务的增加、使用和交互模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。恩,读起来有点咬口,还是不是很理解。接下来慢慢来解读云服务吧。 云服务只是一个统称,我们可以将其分成三层:一层IAAS、二层PAAS、三层SAAS。 1.1.IAAS基础设施服务 Infrastructure-as-a-Service(基础设施即服务),把IT基础设施作为一种服务通过网络对外提供。 在这种服务模型中,用户不用自己构建一个数据中心,而是通过租用的方式来使用基础设施服务,包括服务器、存储和网络等。例如我们可直接在网络上购买阿里云服务器来使用,而不用自己构建机房、网络、储存等设设备。 换句话说就是,我们把网络、服务器、存储等这些IT基础设施作为一种资源,通过网络给用户提供服务。 1.2.PAAS平台服务 Platform-as-a

【bug记录】jpa 解决org.hibernate.lazyinitializationexception could not initialize proxy

限于喜欢 提交于 2020-08-05 23:52:33
前言 最近开发项目比较忙,Spring Cloud的笔记得稍稍放放了,下午出来个bug,恶心的不行,功能很简单,也没有什么级联或复杂的映射关系,就是一直在报三个异常 Caused by: com.fasterxml.jackson.databind.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) (through reference chain: com.shunneng.core.web.rest.util.Result["data"]->com.shunneng.flup.web.rest.dto.SaveFlupDTO["flupForm"]->com.shunneng.flup.domain.FlupForm_$$_jvst158_3["handler"]) 2018-05-14 16:54:44,571 ERROR XNIO-2 task-3 c.s.c

学习java编程先做好哪些准备

徘徊边缘 提交于 2020-08-05 20:03:12
万事开头难,相信这是很多刚入行学习Java的人的感受,Java语言的学习虽然相对其他的语言门槛稍高,很多初学者,在刚入门的时候之所以会觉得难、不好学,是因为在学习没有掌握好学习方法。那么,有人觉得Java难学,这其中的原因究竟有哪些呢?学习java编程先做好哪些准备 第一是否下定决心要学习Java 不能从全局、长远的角度考虑问题,是不能够处理好一时的事情的。所以,在学习Java开发前,不妨先冷静下来,问问自己对Java开发是否真的感兴趣,是否能够静下心来坚持不懈的学习。面对着Java开发相对复杂的知识体系,你是否做好了应对的准备,如果,这些你都没有考虑清楚,那么接下来的学习过程你会觉得非常辛苦。 第二做好充分的学习准备 如果你做好了第一点强调的思想准备,那么你就该为如何学习做准备。作为一名初学者,在学习前可以先购买一些相关的书籍或者从互联网上找一些相关的资料去了解究竟什么是Java开发,然后,在根据自己的实际情况确定是自学 第三规划学习蓝图 企业的发展需要蓝图,而个人的学习也需要蓝图,我们这里强调的蓝图其实就是学习Java的路线图,一个好的学习路线图能够助力求学者有的放矢的进行学习,高效的进行学习。 第四寻找学习中的助力点 牛顿曾经说过:如果说我看得比别人更远些,那是因为我站在巨人的肩膀上。在学习的过程中如果我们只是闭门造车的去学习,那么最终的结果就是会导致自己在步入社会后出现

【Spring Cloud】网关

微笑、不失礼 提交于 2020-08-05 19:42:34
1. 背景 通过 Spring Cloud 和微服务 的学习,我们了解到使用Spring Cloud实现微服务的架构基本成型,大致是这样的: 我们使用Spring Cloud Netflix中的Eureka实现了 服务注册中心 以及服务注册与发现;而服务间通过 Ribbon 或Feign实现服务的消费以及均衡负载。为了使得服务集群更为健壮,使用 Hystrix 的熔断机制来避免在微服务架构中个别服务出现异常时引起的故障蔓延。 在该架构中,服务集群包含:内部服务Service A 和 Service B,他们都会注册与订阅服务至Eureka Server,而Open Service是一个对外的服务,通过均衡负载公开至服务调用方。我们把焦点聚集在对外服务这块,直接暴露我们的服务地址,这样的实现是否合理,或者是否有更好的实现方式呢? 先来说说这样的架构需要做的一些事儿以及存在的不足: • 破坏了服务无状态特点。 为了保证对外服务的安全性,我们需要实现对服务访问的权限控制,而开放服务的权限控制机制将会贯穿并污染整个开放服务的业务逻辑,这会带来的最直接问题是,破坏了服务集群中REST API无状态的特点。 从具体开发和测试的角度来说,在工作中除了要考虑实际的业务逻辑之外,还需要额外考虑对接口访问的控制处理。 • 无法直接复用既有接口。 当我们需要对一个即有的集群内访问接口,实现外部服务访问时

Spring Cloud Alibaba系列(五)sentinel实现服务限流降级

老子叫甜甜 提交于 2020-08-05 19:03:54
一、sentinel是什么 sentinel的官方名称叫分布式系统的流量防卫兵。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。在Spring Cloud项目中最开始我们使用的是Hystrix,目前已停止更新了。现在Spring Cloud官方推荐的是rensilience4j。当然还有我们今天学习的sentinel。 Sentinel 具有以下特征: 丰富的应用场景 :Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。 完备的实时监控 :Sentinel 同时提供实时的监控功能。您可以在控制台中看到接入应用的单台机器秒级数据,甚至 500 台以下规模的集群的汇总运 行情况。 广泛的开源生态 :Sentinel 提供开箱即用的与其它开源框架/库的整合模块,例如与 Spring Cloud、Dubbo、gRPC 的整合。您只需要引入相应的依赖并进行简单的配置即可快速地接入 Sentinel。 完善的 SPI 扩展点 :Sentinel 提供简单易用、完善的 SPI 扩展接口。您可以通过实现扩展接口来快速地定制逻辑。例如定制规则管理、适配动态数据源等。 二、sentinel实现限流 2.1

SpringCloud 应用在 Kubernetes 上的最佳实践 — 线上发布(可灰度)

送分小仙女□ 提交于 2020-08-05 18:17:30
简介: 前三篇文章我们介绍了应用的开发和部署,那么在应用成功上云后,我就要面对应用的管理话题了,这一篇我们来看看如何做线上发布,并且是可灰度的。 作者 | 白寂 阿里云开发工程师 导读 :前三篇文章我们介绍了应用的开发和部署,那么在应用成功上云后,我就要面对应用的管理话题了,这一篇我们来看看如何做线上发布,并且是可灰度的。 相关文章推荐: 《SpringCloud 应用在 Kubernetes 上的最佳实践 —— 开发篇》 《SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(开发部署)》 《SpringCloud 应用在 Kubernetes 上的最佳实践 — 部署篇(工具部署)》 前言 在新版本上线时,无论是从产品稳定性还是用户对新版本的接受程度上考虑,直接将老应用升级到新版本应用都有很大风险的。我们一般的做法是,保证新老版本同时在线,并且先将少部分流量切换到新版本应用上,同时在此期间对新版本的应用请求进行观察。在确认新版本没有问题后,再逐步将更大比例的流量切换到新版本上。这个过程的核心是可以对流量的流入转发规则进行配置,EDAS 的金丝雀发布能力,提供了多个版本同时在线的能力,并且提供了灵活的配置规则来给不同的版本进行流量分配。 部署在 EDAS Kubernetes 集群中的 Spring Cloud 微服务应用

Feign

一笑奈何 提交于 2020-08-05 16:52:42
http://www.iocoder.cn/Spring-Cloud/Feign/?github 来源: oschina 链接: https://my.oschina.net/u/3847203/blog/4471168

2020年Dubbo30道高频面试题!还在为面试烦恼赶快来看看!

爱⌒轻易说出口 提交于 2020-08-05 16:48:01
前言 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)。 很多时候,其实我们使用这个技术的时候,可能都是因为项目需要,所以,我们就用了,但是,至于为什么我们需要用到这个技术,可能自身并不是很了解的,但是,其实了解技术的来由及背景知识,对于理解一项技术还是有帮助的。 关于Dubbo的知识总结了个思维导图 Dubbo 面试题 1、为什么要用 Dubbo? 2、Dubbo 的整体架构设计有哪些分层? 3、默认使用的是什么通信框架,还有别的选择吗? 4、服务调用是阻塞的吗? 5、一般使用什么注册中心?还有别的选择吗? 6、默认使用什么序列化框架,你知道的还有哪些? 7、服务提供者能实现失效踢出是什么原理? 8、服务上线怎么不影响旧版本? 9、如何解决服务调用链过长的问题? 10、说说核心的配置有哪些? 11、Dubbo 推荐用什么协议? 12、同一个服务多个注册的情况下可以直连某一个服务吗? 13、画一画服务注册与发现的流程图? 14、Dubbo