Spring
Tech In Pieces
这个作者很懒,什么都没留下…
展开
-
基于Springboot的微服务架构中的缓存应该如何实现?
用Redis首先 add dependencies in pom.xml:然后再application.properties中配置redis:host(IP address of redis server), port(6370), password.然后 我们用@StringRedisTemplate来操作redis.代码:原创 2021-12-28 05:33:22 · 1311 阅读 · 0 评论 -
面试向:How to do Caching in Springboot?
首先我们要明确 Cache到底是在cache什么?cache是缓存HTML页面?还是缓存数据库查询结果?在微服务架构中 缓存又需要有哪些独特的地方需要用到?首先我们先广义的说一下缓存在软件开发中的用处:缓存能够大大加快我们的应用相应的速度。就是相当于空间换时间。缓存的数据一般是:频繁访问的数据,储存耗时的结果,减少磁盘的IO。缓存有这么几个分类:客户端缓存(静态文件:html, css,图片等等)代理服务器缓存:常见的是CDN缓存。服务器缓存:memcache, redis缓存就是指服务器原创 2021-12-28 05:28:04 · 151 阅读 · 0 评论 -
面试向:SpringData MongoDB
还是那一套:加spring data mongoDB 的dependencies 在Pom.xml里面。然后config mongoDB by add the configration class:@Configurationpublic class AppConfig { public @Bean MongoClient mongoClient() { return MongoClients.create('mongodb://localhost:27017'); }}what’原创 2021-12-20 05:50:36 · 148 阅读 · 0 评论 -
面试向:不同的ThreadPool(线程池)的适用场景
对于需要保证所有提交的任务都要被执行的情况,使用FixedThreadPool(size: fixed, no timeout[will executed all])如果限定只能使用一个线程进行任务处理,使用SingleThreadExecutor(if specifically asked to only use single thread)如果希望提交的任务尽快分配线程执行,使用CachedThreadPool(if we want the submited task get executed as原创 2021-12-20 05:43:27 · 273 阅读 · 0 评论 -
面试向:API Gateway和Load Balancer到底有什么区别
之前说过 不管是client side discovery service还是sever side discovery service. API gateway一定是要有的。不管这个Load balancer和service registery是不是结合在一起(Ribbon+Eureka, Amazon ELB)。但是这个结论是不是正确的呢?首先 我们知道aws lambda, API gateway和amazon ELB都能integrate with lambda.然后 我们看看API gatew原创 2021-12-18 05:56:59 · 1586 阅读 · 0 评论 -
Hibernate链接和JDBC链接数据库有什么区别?
Hibernate先检索缓存中的映射对象(即操作对象)而JDBC则是直接操作数据库。Hibernate的底层其实还是JDBC。 所以 如果我们正确的使用JDBC 效率是要比hibernate好的,但是因为我们更适合去操作Object 更符合Java“万物皆对象”的思想。...原创 2021-12-18 05:56:08 · 103 阅读 · 0 评论 -
Maven依赖中groupId和artifactId的区别
这两个是坐标 为了保证项目的唯一性。想要在一个大项目中找到一个小项目 就必须要根据这两个坐标进行查找。groupId一般是 domain+compnay_name: org.ApacheartifactId一般是 project_name-Module_name: testProject一般来说 管理依赖中(pom.xml)文件 不只有groupId和artifactId 还有version, scope等等。<dependencyManagement> <dependen原创 2021-12-18 05:55:42 · 1861 阅读 · 0 评论 -
面试向:What if one of the microservices goes down?
讲道理 如果说 你的某个microservice goes down导致了你整个系统的崩溃 那就说明这个系统是single point failure的 很不robust。所以 我们要做的 就是防止这种情况的发生。所以就要怎么办?要搞duplicate服务 用discovery service来管理这些东西 不需要自己费心。而且有的时候也不用把duplicate服务一直闲置。我们可以用round robin算法来进行服务器的调用。这样避免了某个服务器过载而出问题。微服务之间的通信尽量用asynch原创 2021-12-17 05:58:07 · 85 阅读 · 0 评论 -
面试向:What if a microservice running slow?
slow会带来很多问题 不仅仅会影响这个slow的service 也会影响其他的看起来毫不相干的services.为什么?因为这个threads.每个sever都会有一定数量的threads,用来供大量的request来进行请求。一旦一个request长时间占用这个线程 那么其他的request可以用的threads就少了 也就会意味着等待的时间变长了。而一旦等待时间变长 就很可能会出现这个request 因为迟迟没有拿到结果 而timeout了 所以看起来这个对应的服务好像也出问题了。而对用户来说原创 2021-12-17 05:57:41 · 67 阅读 · 0 评论 -
EC2和Docker到底有什么区别?
我的理解之中EC2: elastic compute cloud. 之前的S3是云的储存 这个是在云里面计算 我们需要创建EC2 instance来把我们的service放进去。就先一个vMDockers:就是容器 可以自带各种依赖和配置 就像一个VM?其实 dockers不是VM。他是比VM更加轻量级 因为VM里面要各种东西 一个VM可以运行很多很多个dockers。所以 EC2是一个VM 但是docker只是docker.所以 我们需要running docker on AWS EC2 所以原创 2021-12-17 05:33:03 · 1841 阅读 · 0 评论 -
什么是NAT Server?
首先 这些事干什么用的?private network, use public ip address to provide service for external users.nat server功能使得内部服务器可以供外部网络访问。外部网络的用户访问内部服务器时,nat将请求报文的目的地址转换成内部服务器的私有地址。对内部服务器回应报文而言,nat还会自动将回应报文的源地址(私网地址)转换成公网地址。nat server是什么?解决内网问题的nat穿透方法有哪些?...原创 2021-12-17 05:31:06 · 3249 阅读 · 0 评论 -
面试向:什么是Mutation testing?
It’s a test for Unit test, meant to detect the quality of unit testing.原创 2021-12-17 05:26:12 · 172 阅读 · 0 评论 -
面试向:How to do manage events/bug tracking in JIRA?
Everything in JIRA is an event/issue.because JIRA is for bug tracking and Scrum management.there are three dimensions for each of the issue:status(to do/doing/done), resolution (fixed, can’t reproduce, incomplete, done), priority (critical, blocker…)**原创 2021-12-16 05:53:03 · 254 阅读 · 0 评论 -
【How to Use】Series: How to use JIRA in SpringBoot?
一些零碎的知识点 记住就行了JIRA:for bug tracking and project management.working flow in JIRA: open, in progress, closed.what kind of thing will be referred as an issue in JIRA?a big, a task, a help-desk ticketis JIRA an independent web app?no, it can be integrat原创 2021-12-16 05:49:28 · 219 阅读 · 0 评论 -
JSP和Servlet到底是什么?干什么用?
jsp(Java server pages)就是在html里面写java代码(本质是HTML),servlet就是在java里面写html代码(本质是按照一定要求写的Java类 就和JavaBean一样)其实jsp经过容器解释之后就是servlet.只是我们自己写代码的时候尽量能让它们各司其职,jsp更注重前端显示,servlet更注重模型和业务逻辑。不要写出万能的jsp或servlet来即可。...原创 2021-12-16 05:39:36 · 1146 阅读 · 0 评论 -
面试知识点大总结:Core Java+DB+Advanced Java
Core Java:java 8 new featuresOptional: used for handling nullPointExceptiondefaultOOPwhat is thread pool and the adv of itdaemon thread?heaps vs stack in JVMhow GC works and can we force it?how to make thread safe? based on those ways choose what?原创 2021-12-16 05:34:57 · 167 阅读 · 0 评论 -
面试向:Spring中的Bean是线程安全的吗?
No, it’s not.It depends on the scope of Beans.singleton scope的Bean是最危险的all the threads share the same Bean, so it might have not thread safe situations.两种情况:这个bean是stateless的 就是说 他没有fields可以被改变,比如Controller, Service, DAO,这些大多数是无状态的,只关注于方法本身。如果bean是有状原创 2021-12-16 05:31:16 · 101 阅读 · 0 评论 -
微服务架构下的authentication and authorization(授权与鉴权)
JWT, OAuth2, SSO这三个不重合 不冲突的概念的综合应用。原创 2021-12-16 05:30:32 · 407 阅读 · 0 评论 -
Web Server, HTTP Server, Application Server, Tomcat,Servlet之间都是什么关系?
web server == http server. 这个是接受HTTP请求的application server是放业务逻辑的。也就是后端。web server, or http server, 负责接受并相应http请求。接受了这个请求后 要转手给application server进行处理。有一些application server可以充当http server.Tomcat是application server. used for executes Java servlets, renders原创 2021-12-11 05:31:33 · 419 阅读 · 0 评论 -
Cookie, Session, Token, JWT, OAuth2和SSO概念的区分
Authentication: make sure you are yourself.how to do authentication?username+pw, email/mobile code.Authorization: check what kind of things you are allowed to do in this system.how to do authorization?Cookie, Session, Token, OAuth2.diff between cooki原创 2021-12-11 05:29:14 · 3320 阅读 · 0 评论 -
面试概念总结之三--IOC控制反转
牢牢抓住三条:what is IOC? what’s the adv and dis-adv of it? what’s the principle of it?what is IOC? (Inversion of control)it’s a mechanism, to achieve loose-coupling between Objects dependencies.How to achieve loose-coupling? Object dependencies are injecte.原创 2021-10-13 04:48:45 · 131 阅读 · 0 评论 -
面试概念总结之一--HTTP/Servlet
http request/response:HTTP request:request line + header + request-bodyrequest line: method + URL + http/1.1header: key-value pair (like: Accept: image/gif, Accept-Language: zh-cn, user-Agenet: Mozilla/4.0, Connection: Keep-Alive, Cookie: XXX)request.原创 2021-10-13 04:47:09 · 99 阅读 · 0 评论 -
深入理解:消息队列
消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?Why do we need message queue?use for async processingservice decouplingstream control.异步处理:服务解耦:流量控制:接下来 消息队列的两种模型 这个我们也是很熟悉了。queue and pub-sub队列模型每条消息只能被一个消费者消费,而发布/订阅模型就是为让一条消息可以被多个消费者消费而生的,当然队列模型也可以原创 2021-12-10 05:45:49 · 189 阅读 · 0 评论 -
面试向:Optimistic lock in microservice architecture
It used on RestAPI, and distributed db transaction.why?because they all need lock in here.several clients will try to get access to the same resource, and DAO layer will try to get access to the same record of a DB.For RestAPI:use entity tags: “ETags”原创 2021-12-08 05:44:01 · 103 阅读 · 0 评论 -
面试向:What‘s Domain-driven design (DDD)?
也就是说 如何对微服务中的服务进行划分。原创 2021-12-08 05:43:00 · 256 阅读 · 0 评论 -
Spring和MicroService到底是什么关系?
其实两者根本就不是一个领域的东西。Spring只是个Java框架 用于企业级开发。配置详尽,方便快速开发。微服务作为一种软件架构 构造方式。除了这种架构之外 还是有monolothic, frontend backend seperate架构。如果非要说有什么联系的话 那其实Spring Cloud和微服务的关系比较紧密一点。SPringboot其实也是因为Spring框架变得越来越复杂,而衍生出来的“约定大于配置”。在简化配置 打包和集成第三方工具方面做的挺好。而Spring cloud则是作为原创 2021-12-08 05:40:23 · 286 阅读 · 0 评论 -
Spring and MicroService,看这一篇就够了
基于Spring Boot和Spring Cloud实现微服务架构Spring框架:Springbootspring IO platformSpring cloudSpring dataSpring securitySpring BatchSpring LDAPSPring sessionand within Spring Cloud:Spring cloud netflix(including eureka, zuul, Hystrix, ribbon)Spring cloud s原创 2021-12-08 05:39:25 · 126 阅读 · 0 评论 -
面试向:如何利用Amazon RDS来管理微服务架构中的数据库?
它是一种托管服务。可以简化我们设置 操作和拓展数据库的过程。数据库实例:就是一个在云上的数据库环境,可以通过AWS RDS API 或者是AWS CLI.然后就可以启动这个实例。如何访问运行中的数据库实例:通过AWS管理控制台。RDS可以运行多个数据库实例?40.每个数据库实例中可以运行多少个数据库或者数据库架构?for most of rd, not limited.for oracle, 一个数据库 但是结构可以有多个。在用RDS之前 我们要将我们自己的数据库里面的数据和配置导入到R原创 2021-12-08 05:38:59 · 158 阅读 · 0 评论 -
面试向:How to use resilience4j lib in springboot project?
首先 我们来看一下resilience4j有哪些模块:retry: o自动重试RateLimiter: 限制访问次数TImeLimiter: 设置时间间隔限制CircuitBreaker: 熔断器模式BulkHead: 限制远程并发操作的数量Cache:储存远程操作的结果这几个模块大概就是我们在设计一个容错性良好的微服务系统中所要考虑的东西(Cache-circuit breaker-Rate limit- canary deployment-chaos)重试被用到了各种各样的情况下 只要是原创 2021-12-07 05:51:46 · 144 阅读 · 0 评论 -
面试向:如何设计一个有容错性的微服务架构?
因为微服务的前一发动全身的特性 所以我们必须要让我们的微服务系统有一定的容错性,即就算有一部分出问题 我们也必须保证其他的服务是正常的。下面就是几种能够增加容错性的设计方式。首先想一下 什么时候会出问题?当我们增删改服务的时候 就会出现错误。当外部硬件有问题 比如说网络问题(这个可以用circuit breaker design pattern以及service discovery来实现)针对服务的更新,我们应该先进行小范围替换,以渐进的方式替换全部的实例。在此期间需要监视他们,如果发现对关键指标原创 2021-12-07 05:51:04 · 278 阅读 · 0 评论 -
微服务架构容错性工具Netflix Hystrix, resilience4j的对比
resilience4j is a higher fault tolerance and resilence library.it’s recommended in Spring.why?Resilience4j是一个为Java8和函数式编程设计的容错库。Resilience4j是一个受Netflix Hystrix启发的轻量级容错库,但它是为Java 8和函数式编程设计的。轻量级,因为库只使用Vavr,它没有任何其他外部库依赖项。断路器对比Sentinel、Hystrix、resilience4原创 2021-12-07 05:50:27 · 365 阅读 · 0 评论 -
面试向:SOAP和REST到底有什么区别?
what are soap and rest?adv and dis?They are both the ways to do data transformation online.REST: representative stateful transformation.SOAP: simple object access protocol.the difference is SOAP is a protocol but REST is not.but depends on the prefer原创 2021-12-07 05:50:02 · 173 阅读 · 0 评论 -
Kafka入门
Kafka is a messaging system, based on publisher-subscribe mode, and each time the consumer will poll from the publisher, not like the SNS.cluster-broker-topic-partition-offset所以说基本上是producer-cluster-consumer, zookeeper是用来管理cluster的。a big topic could be原创 2021-12-07 05:49:35 · 114 阅读 · 0 评论 -
面试向:到底是什么是Elastic Search
我们知道这个东西是ELK的一部分 而这个ELK是用来做log aggregation的 包括log的收集 分析和可视化。但是 究竟什么是Elastic search呢?这个工具并不是专门用来分析log 其本身是一个文本文件检索分析的工具 应用十分广泛。具体怎么用在这里不再多说,会专门开一个文章来讲。...原创 2021-12-06 05:32:46 · 77 阅读 · 0 评论 -
面试向:如何在微服务架构中使用ELK进行日志处理?
微服务的日志处理有什么需要考虑的问题?日志分布在不同的服务器上。所以 ELK就出现了 他是一个分布式日志收集系统:log stash负责收集 E负责检索和分析 K负责展示。他们使用REST API来对外提供服务。我们要分别安装这三个组件。安装好之后 开始整合:其中的filebeat用于监听日志文件。Filebeat 监听应用的日志文件,随后将数据发送给 logstash,logstash 则对数据进行过滤和格式化,如 JSON 格式化;之后 logstash 将处理好的日志数据发送给 Ela原创 2021-12-06 05:32:07 · 261 阅读 · 0 评论 -
软件架构:SOA和Microservice architecture有什么不同?
两者确实很像。都是基于service 都是属于分布式体系结构不同之处:SOA使用于大型的企业级系统。其meddaging middleware 十分强大,microservice适合较小的web application service.原创 2021-12-06 05:28:55 · 132 阅读 · 0 评论 -
面试向:使用微服务架构 需要注意哪些问题?
虽然把系统微服务化了 但是不代表这个就好开发 因为这样也使得整个系统变得更碎了。难以自动化。因为我们要把每个组件按照他们的逻辑进行构建和发布 监控等等。而且作为一个零碎的整体 会带来大量的难以部署 配置 维护 监控 识别的问题。如果一个部分出了问题 其他的也不能独善其身 因为所有的都是连接起来的...原创 2021-12-06 05:27:50 · 1430 阅读 · 0 评论 -
面试向:选择Client side Discovery service还是选择Server Side discovery service?
Client-side discovery service: Netflix eureka and Netflix ribbonServer-side discovery service: Amazon ELBuse client side:when we having a hierarchy microservices, say service B is depend on A. and we have loads of service B servers, so we need a load ba原创 2021-12-06 05:26:58 · 69 阅读 · 0 评论 -
面试向:什么是Two factor authentication?
two factor 意味着此次登陆 你必须要验证两个不同方面的要素。如果用户只需要输入username+PW 那么就是one factor authentication.so what kind of things count as a factor?原创 2021-12-06 05:26:04 · 281 阅读 · 0 评论 -
面试向:How to automate test/deployment with Jenkins
Test: 利用TestNG(适用于Unit测试 功能测试 集成测试 )Junit testingIntegration testingpoint to point testDeployment:Linux服务器下载安装Jenkins 部署到tomcatlocalhost:8080/jenkinsLinux服务器中安装git maven 创建一个jenkins目录。将linux服务器注册到Jenkins上。然后创建自动化部署任务。(编写shell部署脚本 )然后在JENKINS上新建任务原创 2021-12-05 05:37:45 · 115 阅读 · 0 评论