Spring Cloud

编程语言是选择Java好还是Python好?

此生再无相见时 提交于 2020-08-11 08:25:16
老师傅来说说java和Python,你是不是也较纠结应该选哪个编程语言好,我的粉丝私信我说,他觉Python有趣,但是听别人说Java更好找工作一些,所以说他来问我到底学什么好些。 JAVA和Python哪个岗位就业多,更好找工作? 今天我就来回答一下这个问题。首先目前的情况确实是公司的Java的需求量是要大于Python的,从各大招聘网站上面都可以看得出来,Java是目前企业应用开发的一种主流的语言,包括各类的网站,企业的内部系统,云平台、安卓手机等等,使用Java的地方非常多,Python目前在公司还是一种小众的存在方式,比如公司喜欢Python去做一些运维,去做一些工具系统等等,也就是说应用周边的领域Python用的多一些,所以说这就导致了Java的确是更好找工作一些。 不过有以下几点我还是必须得要说一下! 第一点 ,大家一定经常听过AI这个词对不对?人工智能,在这个领域Python还是比较占有优势的,所以你可以把Python理解为在未来比较看好用的比较多,目前也比较火热的语言。 第二个 ,从学习难度来讲的话,Java是要大于Python,因为Python整体来说更像是一门自然语言,你学Python的时候,你感觉就跟写英语是一样,但在Java中它有很多繁琐的地方,比如说做一个小的功能,Python可能只需要三四行,但是Java可能需要几十行甚至更多

微服务架构的前世今生(八):微服务架构的技术支持

和自甴很熟 提交于 2020-08-11 07:58:47
上次我们说到 微服务架构的前世今生(七):微服务架构生态体系 ,这次我们在说说微服务架构的技术支持。作者 哈喽沃德先生,欢迎关注。 一、Spring Cloud Spring Cloud Netflix Eureka :服务注册中心。 Spring Cloud Zookeeper :服务注册中心。 Spring Cloud Consul :服务注册和配置管理中心。 Spring Cloud Netflix Ribbon :客户端负载均衡。 Spring Cloud Netflix Hystrix :服务容错保护。 Spring Cloud Netflix Feign :声明式服务调用。 Spring Cloud OpenFeign(可替代 Feign) :OpenFeign 是 Spring Cloud 在 Feign 的基础上支持了 Spring MVC 的注解,如 @RequesMapping等等。OpenFeign 的 @FeignClient 可以解析 SpringMVC 的 @RequestMapping 注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均衡并调用其他服务。 Spring Cloud Netflix Zuul :API 网关服务,过滤、安全、监控、限流、路由。 Spring Cloud Gateway(可替代 Zuul) :Spring

可视化限流管理,Sentinel 控制台启动和接入

自闭症网瘾萝莉.ら 提交于 2020-08-11 07:11:43
Sentinel 的使用可以分为核心库和控制台两个部分。 核心库不依赖任何框架/库,集成了主流框架,可以进行单机限流降级等功能, 控制台Dashboard提供了可视化的管理限流规则、对集群进行监控,集群限流分配管理、机器发现等功能。 这篇博客学习 Sentinel 控制台的启动和接入。 一、控制台启动 控制台下载有两种方式,一种是直接下载编译好的release版本程序包,另一种是下载控制台的工程代码,在本地打包后启动。 直接下载release程序包 从 release 页面下载最新版本的控制台 jar 包。 最新的正式版本是v1.7.1。 通过代码构建 下载最新的 sentinel-dashboard 控制台工程,代码仓库地址 sentinel-dashboard 。 下载后,进入工程目录,通过Maven打包成一个可执行的 fat jar: mvn clean package 构建和启动 使用如下命令启动控制台: java -Dserver.port=8080 -Dcsp.sentinel.dashboard.server=localhost:8080 -Dproject.name=sentinel-dashboard -jar sentinel-dashboard.jar 注意:启动 Sentinel 控制台需要 JDK 版本为 1.8 及以上版本。 其中, -Dserver

打破你的认知!Java空指针居然还能这样玩,90%人不知道…

心不动则不痛 提交于 2020-08-11 05:34:45
相信在座的各位都遇到过空指针异常,不甚其烦,本文不是教你避免空指针,而是一些对空指针其他方面的理解。 本文可能有点另类,也可能会打破你对空指针的认知。 1、null.method() 空指针? 我们知道调用一个对象的方法,如果对象为 null 肯定会报空指针错误的,但你确定一定会吗? 不一定! 来看下面的示例: /** * 访问静态方法 * @from 微信公众号:Java技术栈 */ private static void test() { NullTest nullTest = null; // hello nullTest.test1("hello"); } /** * @from 微信公众号:Java技术栈 * 关注获取更多好玩的 Java 技术干货 */ private static void test1(String text) { System.out.println(text); } 如果 null 对象指向该类型的静态方法,不但不会报空指针错误,而且还会运行正常,是不是很6? 因为静态方法不属于任何对象,它属于类本身的,相当于直接调用类的静态方法。 2、拆箱空指针 是的,大家要注意拆箱引发的空指针风险,不知道的赶紧往下看,来看下面的例子: /** * 拆箱 * @from 微信公众号:Java技术栈 */ private static void test() {

Dubbo测试环境服务调用隔离这么玩对么

五迷三道 提交于 2020-08-11 05:23:37
背景阐述 前几天,有位同学问我一个关于 Dubbo 的问题。他的诉求是这样子的: 诉求一 第一个诉求是本地开发的时候想自己调用自己的服务,比如自己在改 A 服务,然后出问题了,本地再启动一个 B 服务,A 服务调用 B 服务直接排查问题。 目前的问题是用的同一个注册中心,所以会调用到其他的服务实例。 还有就是去网上找了一些文章的资料,按照资料上的配置没有效果,也就是在@Reference 配置 url 来指定调用的服务地址。 配置如下: @Reference(url="dubbo://localhost:20880") 诉求二 目前他们的测试环境没有使用 Docker 来部署,而且每个服务只部署了一个实例。问题就是当一个项目并行开发时有多个分支,这些分支得合并后一起部署测试。经常会出现代码冲突等问题。 还有就是快要上线时,需要下掉其他的分支做回归测试。但是会出现其他团队也要同一天上线,就只能协商等待来解决。 最好的方式就是可以实现一个分支部署一个实例,对于他们目前的这个规模和投入这个暂时做不了。所以他向我请教,有没有什么更好更快的方式。 解决方案 既然找了我,我还是给出一些建议吧,不一定很好,仅供参考。 诉求一解决方案 @Reference 在@Reference 中指定 url 是可以的,只是那位同学配置的地址有问题,在地址后面应该加上接口和版本的信息。 @Reference

微服务学习与思考(04):微服务技术体系

瘦欲@ 提交于 2020-08-11 05:22:02
前面微服务3篇文章: 微服务学习与思考(01):什么是微服务?微服务的优势和劣势 微服务学习与思考(02):微服务实施前有哪些问题需要思考? 微服务学习与思考(03):微服务总体架构图解 一、微服务技术体系 下图列出了微服务的技术体系: 二、Golang微服务技术栈 微服务框架 go-micro go-kit 国内的bilibili和斗鱼也出了一个微服务框架: kratos bilibili出品 jupiter 斗鱼出品 网关 kong nginx +lua traefik apisix 服务注册和发现 consul etcd zookeeper 配置中心 Apollo , Nacos ... ... 服务治理 断路器: hystrix-go 流量控制: sentinel-golang 从限流、流量整形、熔断降级、系统负载保护等多个维度来帮助您保障微服务的稳定性。 链路监控 zipkin,pinpoint,skywalking,jaeger 日志、业务、系统监控 prometheus ELK CI/CD jenkins drone ...... golang技术学习和微服务学习, 这里有个学习路线图 ,可以去学习 三、java微服务技术栈 用java技术开发微服务,比较主流的选择有:Spring Cloud 和 Dubbo。 Spring Cloud Spring Cloud

替代 Hystrix,Spring Cloud Alibaba Sentinel 快速入门

痴心易碎 提交于 2020-08-11 04:50:34
提起 Spring Cloud 的限流降级组件,一般首先想到的是 Netflix 的 Hystrix。 不过就在2018年底,Netflix 宣布不再积极开发 Hystrix,该项目将处于维护模式。官方表示 1.5.18 版本的 Hystrix 已经足够稳定,可以满足 Netflix 现有应用的需求,所以接下来其会把焦点转向对于自适应的实现,更多关注对应用程序的实时性能做出响应。对于新应用的熔断需求,将采用其它项目实现,Netflix 推荐了 Resilience4j。 作为 Spring Cloud Netflix 重要套件,Hystrix已经成为保障微服务稳定性的首选应用。其实除了 Netflix 和 Resilience4j,限流降级还有一个新的选择,就是阿里巴巴的Sentinel组件。 一、阿里开源 Sentinel 简介 2018年8月,阿里巴巴宣布将 Sentinel 进行开源,同时推出了结合Dubbo的适配器,捐赠给了Apache Dubbo社区。 1.Sentinel 的历史 2012 年,Sentinel 诞生,主要功能为入口流量控制。 2013-2017 年,Sentinel 在阿里巴巴集团内部迅速发展,成为基础技术模块,覆盖了所有的核心场景。Sentinel 也因此积累了大量的流量归整场景以及生产实践。 2018 年,Sentinel 开源,并持续演进。 2

阿里P8大牛的建议,工作1-5年的Java工程师如何让自己变得更值钱

不羁的心 提交于 2020-08-11 04:16:09
今天这篇文章主要想跟大家分享:工作 1-5 年的 Java 工程师们,如何变得更值钱? 如果你现在已经是一个 Java 工程师,但是经验积累的还不够,那这个阶段就是你成长极快的时候。 前提是,你认同我之前经常说那句话: 从你入行那一刻起,你就要不停地学习。 对于 Java 工程师来说,想在业务能力上更进一步、让自己更值钱,最大的捷径就是用正确的方法来学习,好的方法能让你事半功倍。 我面试过多人,之前也在大厂待过,深知一个道理: 作为一个程序员,你的知识体系,和企业的用人需求,是不一样的。 Java 工程师尤其是。 我也见过一些读者朋友,觉得自己的 Java 技术过关,但是一到面试就被 pass 了,问题就出在这,无法将 Java 技术应用到实际开发中。 这里我建议 Java 经验 1-5 年的读者,可以对标阿里 P7 的标准。 给大家分享一份《对标阿里P7Java架构师学习路线图》,刚开始参加工作及已经工作五六年的朋友都可以参考参考,梳理一下自己的技术栈,这些东西可能你们平时在工作中接触过,但是缺少的全面系统的学习,所以掌握的都不深,希望看了路线图以后大家知道从哪里开始入手学习。 这是通往架构师的必经之路,由浅入深地沉稳扎根基础。 需要完整版《对标阿里P7Java架构师学习路线图》的朋友,请转发+关注,然后私信回复 “666” 获取免费领取方式。 一、扎实基础、深入底层

Dubbo服务调试管理实用命令

≯℡__Kan透↙ 提交于 2020-08-11 03:20:19
公司如果分项目组开发的,各个项目组调用各项目组的接口,有时候需要在联调环境调试对方的接口,可以直接telnet到dubbo的服务通过命令查看已经布的接口和方法,并能直接invoke具体的方法,我们可以利用telnet命令进行调试、管理。 Dubbo2.0.5以上版本服务提供端口支持telnet命令,下面我 通过实例抛砖引玉 一下: 1.连接服务 测试对应IP和端口下的dubbo服务是否连通,cmd命令如下 telnetlocalhost 20880 正常情况下,进入telnet窗口,键入回车进入dubbo命令模式。 dubbo> 2.查看服务列表 查看服务 dubbo>ls com.test.DemoService 查看服务中的接口 dubbo>ls com.test.DemoService queryDemoPageList insertDemolist uploadDemoList deleteDemolist ls (listservices and methods) ls 显示服务列表。 ls -l 显示服务详细信息列表。 lsXxxService 显示服务的方法列表。 ls -lXxxService 显示服务的方法详细信息列表。 3.调用服务接口 调用接口时,以JSON格式传入参数(这点很方便 😄),然后打印返回值和所用时间。 dubbo>invoke com.test

围观:基于事件机制的内部解耦之心路历程

倖福魔咒の 提交于 2020-08-11 03:11:12
每篇文章都有属于它自己的故事,没有故事的文章是没有灵魂的文章。而我就是这个灵魂摆渡人。 主人公张某某,这边不方便透露姓名,就叫小张吧。小张在一家小型的互联网创业团队中就职。 职位是 Java 后端开发,所以整体和业务代码打交道在所难免。 之前有个搜索相关的需求,而且数量量也算比较大,就采用了 ElasticSearch 来做搜索。第一版由于时间比较赶,做的比较粗糙。越到后面发现代码越难写下去了,主要是在更新索引数据的场景没处理好,才有了今天的故事。 基础入门 Spring Event Spring 的事件就是观察者设计模式,一个任务结束后需要通知任务进行下一步的操作,就可以使用事件来驱动。 在 Spring 中使用事件机制的步骤如下: 自定义事件对象,继承 ApplicationEvent 自定义事件监听器,实现 ApplicationListener 或者通过 @EventListener 注解到方法上实现监听 自定义发布者,通过 applicationContext.publishEvent()发布事件 Spring Event 在很多开源框架中都有使用案例,比如 Spring Cloud 中的 Eureka 里面就有使用 event 包 定义 Event 发布 Event Guava EventBus EventBus 是 Guava 的事件处理机制,在使用层面和