Spring Boot

从Uber微服务看最佳实践如何炼成?

点点圈 提交于 2020-11-06 06:52:31
免费加入知识星球、斐讯K3等你来 导读: Uber成长非常迅速,工程师团队快速扩充,据说Uber有2000名工程师,8000个代码仓库,部署了1000多个微服务。微服务架构是Uber应对技术团队快速增长,功能快速上线很出色的解决方案。本文偏向微服务的入门篇,以Uber微服务为例,进行了深入浅出的讲解。 微服务特性 对于微服务没有适当的定义,你可以说它是一个框架,由小型的、独立的可部署的服务组成,执行不同的操作。 微服务专注于单个业务领域,可以作为完全独立的可部署服务,并在不同的技术栈上实现它们。 在使用微服务构建自己的应用程序之前,需要清楚地了解应用程序的范围和功能。 解耦 - 系统内的服务在很大程度上是解耦的。因此,整个应用程序可以轻松构建,更改和缩放 组件化 - 微服务被视为独立的组件,可以轻松替换和升级 业务能力 - 微服务非常简单,专注于单一功能 自治 - 开发人员和团队可以独立工作,从而提高速度 持续交付 - 通过软件创建,测试和批准的系统自动化,允许软件的频繁发布 责任 - 微服务不像项目那样专注于应用程序。相反,他们将应用程序视为他们负责的产品 分散治理 - 重点在于使用正确的工具来完成正确的作业。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题 敏捷 - 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃 微服务优势

JAVA架构师成长之路

半城伤御伤魂 提交于 2020-11-06 05:45:03
不努力,和咸鱼有什么区别!!! gpvip性能调优之mysql https://pan.baidu.com/s/145fjs1BFswp4fFIvRDvlQA vip 享学课堂vip之mysql https://pan.baidu.com/s/1r0N1oFghU--bCbm9rse4aw mysql系列精品VIP视频 https://pan.baidu.com/s/1Y9pzr29ByR8m9FnXao3Y8w Mysql从入门到精通系列视频 https://pan.baidu.com/s/1uUCE2egHvfCYCY_Zrya-Vw gpvip性能调优之tomcat https://pan.baidu.com/s/1vpHmyWkOVZB9_JbvI-rB2w ◆◆ gpvip之activeMQ ◆◆ https://pan.baidu.com/s/1RFkx8CqdkWQS-P_vRoNqIA gpvip之docker从入门到精通 https://pan.baidu.com/s/1af8d7BDttvYKdYMIt3jbNw vip课程之docker https://pan.baidu.com/s/1hfFclD6E_b_P-5ERSzBXlg 架构师成长之路之带你走进Docker的世界 https://pan.baidu.com/s/1oT7ZM

Sharding-Jdbc实现分表分库

99封情书 提交于 2020-11-06 04:39:05
Sharding-Jdbc分表分库 LogicTable 数据分片的逻辑表,对于水平拆分的数据库(表),同一类表的总称。 订单信息表拆分为2张表,分别是t_order_0、t_order_1,他们的逻辑表名为t_order。 ActualTable 在分片的数据库中真实存在的物理表。即上个示例中的t_order_0、t_order_1。 DataNode 数据分片的最小单元。由数据源名称和数据表组成,例:test_msg0.t_order_0。配置时默认各个分片数据库的表结构均相同,直接配置逻辑表和真实表对应关系即可。 ShardingColumn 分片字段。用于将数据库(表)水平拆分的关键字段。SQL中如果无分片字段,将执行全路由,性能较差。Sharding-JDBC支持多分片字段。 ShardingAlgorithm 分片算法。Sharding-JDBC通过分片算法将数据分片,支持通过等号、BETWEEN和IN分片。分片算法目前需要业务方开发者自行实现,可实现的灵活度非常高。未来Sharding-JDBC也将会实现常用分片算法,如range,hash和tag等。 在单个库里,有一张表拆分成n多个小表 比如 t_order拆分成 t_order0 t_order_1 insert操作时候,会根据id取模分表的总数 获取具体存放的位置 分表后 表名成t_order_0 和 t

springboot log4j

吃可爱长大的小学妹 提交于 2020-11-06 02:25:35
一、gradle 排除起步依赖中的logback // 排除全局依赖 configurations { compile.exclude module: 'spring-boot-starter-logging' // all*.exclude group: 'org.gradle.test.excludes', module: 'reports' } 还有一种在部分排除 // 添加起步依赖 implementation ('org.springframework.boot:spring-boot-starter-web' ){ // 排除jar包依赖 // exclude module : 'spring-boot-starter-logging' } 二、新建配置文件,默认放在resource目录下 log4j2-XXXX.xml 可以指定配置文件位置: logging.config = classpath:log4j2-spring.xml 三、修改配置文件 官网: http://logging.apache.org/log4j/2.x/log4j-spring-cloud-config/log4j-spring-cloud-config-client/index.html 如果跟我一样英文不是太好的,可以看这篇博主( 筱光 )的博客 https://blog.csdn.net

SpringBoot 整合 Dubbo 控制台报日志警告 log4j:WARN No appenders could be found for logger (org.apache.dubbo.c..

半腔热情 提交于 2020-11-05 20:19:33
log4j:WARN No appenders could be found for logger (org.apache.dubbo.common.logger.LoggerFactory). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 出现这样的警告, 就是因为相关的 jar 包中依赖有 log4j 1. 如果不配置 dubbo.application.logger 的话, Dubbo默认是使用 slf4j 通过dubbo类org.apache.dubbo.common.logger.LoggerFactory, 就可以看出来 2. 打开 pom.xml 文件, 切换到 Dependency Hierarchy 标签页, 然后可以Filter检索, 哪些 jar 包依赖 log4j, 然后在pom.xml文件中 exclusions 相应的 <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId>

SpringBoot扩展SpringMVC原理和全面接管SpringMVC

邮差的信 提交于 2020-11-05 14:14:15
如果想在SpringBoot中扩展一些SpringMVC的配置,例如需要配置自定义的视图解析器或拦截器等,需要怎么实现呢? 例如,自定义一个视图解析器: @Configuration public class MyConfig implements WebMvcConfigurer { @Override public void addViewControllers ( ViewControllerRegistry registry ) { registry . addViewController ( "/index" ) . setViewName ( "index" ) ; } } 我们只需要编写一个配置类去实现WebMvcConfigurer接口,并选择实现接口中的方法, 不能标注@EnableWebMvc ,这些WebMvcConfigurer接口中的方法就是SpringMVC所可以扩展的配置 注意:在SpringBoot1.0版本中扩展SpringMVC配置是继承WebMvcConfigurerAdapter类,但在2.0以上的版本中已经过时,官方推荐使用以上实现WebMvcConfigurer接口的方式进行扩展,因为在2.0版本中WebMvcConfigurer接口有了默认实现。 WebMvcConfigurer方法介绍:这里只列举几个比较关键的方法 public

kettle自动化的那些事儿

点点圈 提交于 2020-11-05 11:02:22
一、kettle介绍 Kettle 是一款国外开源的 ETL 工具,纯 Java 编写,绿色无需安装,数据抽取高效稳定(数据迁移工具)。Kettle 中有两种脚本文件,transformation 和 job,transformation 完成针对数据的基础转换,job 则完成整个工作流的控制。 二、 ETL介绍 ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据, ETL是BI(商业智能)项目重要的一个环节。 三、 ETL实现细说 其实实现 ETL功能的工具很多,我熟悉并使用过的:Informatica PowerCenter、kettle、sql、PLSQL编程、python等等。 分别简单聊聊这些实现 ETL的手段: (1)、Informatica PowerCenter 此软件是商用的,网上成熟的中文资料比较少,而且版本较旧。英文资料居多,给很多初学者带来了困扰。国内最出名的大神就是杨晓东,国内的中文资料几乎全是杨晓东分享的,资料对应的版本还停留在 7.6和8.5。( 我当年学的时候,自己买了书,在淘宝上淘的视频,还在杨晓东的群里打酱油,经过 6个月的努力,才能上手正常工作 ) (2)、kettle 此软件是开源的,纯 java编写,网上文档和视频资料特别多

Springboot2整合RocketMQ、Netty

你。 提交于 2020-11-05 07:20:39
1、安装RocketMQ,忽略; 2、创建springboot项目,pom添加 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.53.Final</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.53.Final</version> </dependency> <dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq

三分钟带你了解SpringBoot真正的启动引导类!

给你一囗甜甜゛ 提交于 2020-11-05 06:01:41
引言 SpringBoot 项目中的启动类,一般都是 XXApplication ,例如**「StatsApplication」 , 「UnionApplication」**。 每个项目的启动类名称都不一样。但是它的启动类真的是XXApplication吗? **META-INF/** Manifest.mf文件 jar文件实际上是class文件的zip压缩存档。jar并不能表达应用程序的便签信息. 「META-INF/Manifest.mf文件提供存档的便签信息.」 Manifest.mf有 「Main-Class,用来标明jar文件的入口类。」 解压jar包,查看META-INF/Manifest.mf过程如下: 重要信息如下 Main-Class: org.springframework.boot.loader.JarLauncher Start-Class: com.shanyuan.StatsApplication 也就是说: 「org.springframework.boot.loader.JarLauncher 是 SpringBoot 的启动类!」 下面浏览下 JarLauncher 浏览JarLauncher 3.1 找到JarLauncher 进入IDEA,Ctrl+N查找JarLauncher,竟然找不到!! 进入 https://search.maven

SpringBoot 三招组合拳,手把手教你打出优雅的后端接口

二次信任 提交于 2020-11-04 12:08:47
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨RudeCrab 原文地址: https://www.jianshu.com/p/b5b8613769db 仓库: https://github.com/RudeCrab/rude-java/tree/master/project-practice/validation-and-exception-handler 一、前言 一个后端接口大致分为四个部分组成:接口地址(url)、接口请求方式(get、post等)、请求数据(request)、响应数据(response)。如何构建这几个部分每个公司要求都不同,没有什么“一定是最好的”标准,但一个优秀的后端接口和一个糟糕的后端接口对比起来差异还是蛮大的,其中最重要的关键点就是看 是否规范 ! 本文就一步一步演示如何构建起一个优秀的后端接口体系,体系构建好了自然就有了规范,同时再构建新的后端接口也会十分轻松。 在文章末尾贴上了项目演示的 Github 地址,clone 下来即可运行。并且我将每一次的优化记录都分别做了代码提交,你可以清晰的看到项目的改进过程! 二、所需依赖包 这里用的是 SpringBoot 配置项目,本文讲解的重点是后端接口,所以只需要导入一个 spring