
MicroService
文章平均质量分 50
Tech In Pieces
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HTTP Session和数据库Session有什么不同?
HTTP is based on TCP, and it’s a stateless protocol. 意思就是server side不保存任何关于客户端的状态信息。所以我们就创建了session用来在server side记录客户端状态信息。而hibernate session意思是后端和数据库的一次交互。就是CRUD。Session线程不安全,所以每一次执行一个数据库事务(transaction)我们都需要创建一个session实例。而且使用完之后别忘记关闭。代码示例:<span styl原创 2022-01-20 06:02:25 · 2536 阅读 · 0 评论 -
面试向:RestController代码示例
@RestController@RequestMapping(value="/api")public class UserRestController { UserService userService; @Autowired public UserRestController(UserService userService) { this.userService = userService; } @RequestMappint(val.原创 2022-01-20 05:59:52 · 354 阅读 · 0 评论 -
RPC和RESTful API有什么关系?如何合理的选用?
之前在这篇文章中说过RPC和HTTP之间有什么关系。面试向:什么是RPC?答案是:没关系。两者不是一个层级的东西。HTTP只是RPC思想的一个可用的协议。但是,REST和RPC是什么关系呢?这两个是一个层级的东西 是两种不同的API架构风格。虽然rest API 是最常见的 但是RPC仍然有很大的用武之地。什么是RPC?RPC 使用客户端-服务器模型。请求服务器(换句话说就是客户端)请求一条消息,该消息由 RPC 转换并发送到另一台服务器。服务器收到请求后将响应发送回客户端。当服务器处理这个调用时原创 2022-01-20 05:56:03 · 1501 阅读 · 0 评论 -
什么是分布式缓存?原理是什么?
在微服务架构中,分布式是一定需要的。因为我们的服务器是分布式集群,数据库是集群。这回给我们的缓存带来挑战。那么这个时候 我们的缓存也必须要是分布式的吗?还是说也可以只用一个cache server?先不考虑那么多 先考虑一定用分布式缓存。分布式缓存有两种:一种是一JBoss cache为代表的互相通信同步的分布式缓存。他是每台服务器上都部署app和cache。另一种是以memcache为代表的互相不通信的分布式缓存。缓存与应用分离部署,缓存系统部署在一组专门的服务器上,应用程序通过一致性Hash原创 2021-12-28 05:35:38 · 1929 阅读 · 1 评论 -
Redis的两种持久化机制:RDB和AOF
RDB是定时的持久机制(snap–快照机制)。也就是说会在固定的时间段(或者空闲时间段)才做数据统一。所以如果有宕机的情况,那么就会出现数据丢失。AOF是基于日志的持久机制。应用缓存介绍Redis持久化机制:RDB和AOF...原创 2021-12-28 05:34:19 · 406 阅读 · 0 评论 -
基于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 · 1363 阅读 · 0 评论 -
分布式系统下使用缓存可能存在的问题及解决方法
缓存击穿。就是有一些缓存在被超高并发访问前恰好失效。导致大量请求涌入数据库。【解决方法 给数据库加锁(用synchronized或者用分布式锁【redis给我们实现好了】) 同一时间只有一个请求去查 然后这个查询结果会被缓存 然后后续请求发现这个请求被缓存了】缓存穿透。故意大量去查询一些不存在的数据。然后因为缓存没有击中 数据库也没有,所以也不会被写道缓存中。然后如果重复请求 那么每次都要从数据库去读。会导致系统负载过大。[解决方法:将查询到的null也写入缓存,并设置较为短暂的过期时间]缓存雪崩:指.原创 2021-12-28 05:31:59 · 457 阅读 · 0 评论 -
什么是分布式锁?为什么用分布式锁?有哪些常见的分布式锁?
我们为什么需要分布式锁?因为我们的数据库或者是app的server通常有很多个,而我们高并发请求的时候,只用一个锁肯定不行了(比如只加synchronized关键字)所以 面对微服务架构下的并发请求。我们需要分布式锁。【就是说 多个数据库+多个并发的请求,使得我们需要分布式锁。如果只是一个数据库+多个并发请求,只需要用synchronized或者reentrantLock就行了。并发请求才是我们用锁的关键原因。如果没有并发 我们根本用不到锁】常见的分布式锁:基于数据库的分布式锁悲观锁乐观锁【ve原创 2021-12-28 05:29:04 · 2329 阅读 · 0 评论 -
面试向:How to do Caching in Springboot?
首先我们要明确 Cache到底是在cache什么?cache是缓存HTML页面?还是缓存数据库查询结果?在微服务架构中 缓存又需要有哪些独特的地方需要用到?首先我们先广义的说一下缓存在软件开发中的用处:缓存能够大大加快我们的应用相应的速度。就是相当于空间换时间。缓存的数据一般是:频繁访问的数据,储存耗时的结果,减少磁盘的IO。缓存有这么几个分类:客户端缓存(静态文件:html, css,图片等等)代理服务器缓存:常见的是CDN缓存。服务器缓存:memcache, redis缓存就是指服务器原创 2021-12-28 05:28:04 · 213 阅读 · 0 评论 -
面试向:什么是RPC?
RPC, stands for remote process call(远程过程调用)通俗一点 两台服务器 每个部署一个应用、如果部署在A服务器上的应用A想调用B服务器上部署的服务B的函数,但是两者不在一个内存空间内,如何调用呢?这就带来了RPC。这解决了下面几个问题:如何告诉我们用调用某个特定函数呢?用callID映射客户端如何传递参数给远程函数?把参数序列化和反序列化在网络间传输。网路传输协议:大部分RPC框架用TCP协议,而gRPC则用了Http2.RPC的简要原理:服务消费方(原创 2021-12-28 05:21:15 · 1494 阅读 · 1 评论 -
How to decouple Relational Databases in Microservice architecture?
Chapter 4. Decomposing the Databasecontinuing use the shared databased. (many be some concurrent problem)continuing use the shared databased but access it with a proxy called entitlements services.3. database as a service interface.Pattern: Shared d原创 2021-12-20 05:48:46 · 165 阅读 · 0 评论 -
面试向: How to do automate testing in Jenkins?
install Selenium Plugin in Jenkins.and then start it, so this will call the test script we write. and generate report too.the limitations of using Jenkins for test automation:Jenkins, being a community-driven tool has a large number of contributors. Mul原创 2021-12-20 05:45:44 · 671 阅读 · 0 评论 -
面试向:How to do distributed transactions in MongoDB 4.2?
Distributed transactions, which extend multi-document ACID guarantees from replica sets to sharded clusters, give customers an easier way to address a complete range of use cases by enforcing transactional guarantees across highly scaled, global applicatio原创 2021-12-20 05:44:51 · 164 阅读 · 0 评论 -
面试向:Kafka和ZooKeeper的关系
我们知道Kafka是用来处理real time streaming data, 是个异步消息系统。Zookeeper是一个service register service.ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.kafka is a m原创 2021-12-18 05:58:41 · 663 阅读 · 0 评论 -
什么是分布式事务(Distributed transactions)?
first of all, what’s transaction?it a set of SQL statements that follows ACID principles.ACID is the principle of transaction, like SQL.atomiticity: do it or don;t do at allconsistency: data needs to be concurrent after we did the transactionisolation原创 2021-12-18 05:57:38 · 505 阅读 · 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 · 1777 阅读 · 0 评论 -
面试向:How to config database/databases in microservices?
why do we need to config different databases in micro services?Because all the microservices are loose coupled with each other. so that means when one microservice change something in db, it won’t infect to other microservices.但是我们又不能将DB完全分开 为什么呢?因为这样会造成原创 2021-12-18 05:56:40 · 111 阅读 · 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 · 134 阅读 · 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 · 107 阅读 · 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 · 1951 阅读 · 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 · 3426 阅读 · 0 评论 -
Callback, Fallback和Rollback是什么意思?有什么区别?
fallback意思是切换备用计划(备用计划可以是返回之前的状态,也可以是切换到备用机,也可以是plan B)。rollback意思是返回原来的状态(即没更新前的可用稳定状态)。原创 2021-12-17 05:29:27 · 4643 阅读 · 0 评论 -
为什么微服务架构中每个微服务要用独立的数据库?
之前的项目:因为都是MySQL数据库 所以有的时候我们需要join查表 但是如果每个service都有自己数据库 那么这些跨数据库的交流 会变得及其低效。但是 我们的microserviice架构,其实本质上是想把services 给loosely decoupling.所以 不只是services要被decoupling. 数据也要分开。因为这个低耦合的事情 不只是service低耦合 而且数据库层面 也需要低耦合。因为数据库如果只用一个 其实微服务之间的耦合也没有降低。并且 之前的情况是所有的都用一原创 2021-12-17 05:28:08 · 4789 阅读 · 0 评论 -
面试向:How did you use Angular?
what’s Ajax and RxJS?Ajax stands for async JS and XML. used for local refresh.RxJS stands for reactive extensions for JS. which is used for reactive programming, which thinks everything as event/streaming. It’s a library for reactive programming, using o原创 2021-12-16 05:47:28 · 124 阅读 · 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 · 1195 阅读 · 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 · 135 阅读 · 0 评论 -
微服务架构下的authentication and authorization(授权与鉴权)
JWT, OAuth2, SSO这三个不重合 不冲突的概念的综合应用。原创 2021-12-16 05:30:32 · 458 阅读 · 0 评论 -
面试向:到底该把AWS lambda用在哪里?怎么用?
Amazon Lambda service, means that the user only needs to provide the code, and this service is gonna provide the rest for running your code online.Not like Amazon EC2, where you need to manage your own computing resources.What can Lambda do with other AW原创 2021-12-11 05:28:57 · 425 阅读 · 0 评论 -
Amazon SQS和SNS到底有什么区别?
SQS: queue system-receivers have to poll or pull messages from SQSSNS: notification system-publish subscribe system, receiver will be pushed to subscribers when they are sent by publisher to SNS.SQS是主动去接受 主动去Pull SNS是被动接受。原创 2021-10-17 04:49:12 · 1290 阅读 · 0 评论 -
面试概念总结之九--ORM
这个绕不过 兄弟 还是老老实实的总结一下。三件套:what is ORM? what’s the adv? what’s the principle?ORM: object relational mapping. it coverts between the data in relational DB to an object which will be used in OOD.it often goes with Hibernate(which is a java based persisten原创 2021-10-14 05:14:09 · 162 阅读 · 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 · 126 阅读 · 0 评论 -
AWS: Aws, IaaS, PaaS, SaaS概念
是什么?好处坏处?原理是什么?AWS:网站需要服务器 用来放我们的网站的代码 用来放用户的数据 但是自己构建又有点太贵了 因此我们就用云云分为共有云 私有云 混合云和多云我们常见的云大多数是公有云 比如AWS google cloud, Microsoft Azure.云计算服务有三种类型:IaaS, PaaS, SaaS: infrastructure as a service, Platform as a service, Software as a service.从开发者的角度 我们需原创 2021-09-30 05:02:02 · 1430 阅读 · 0 评论 -
深入理解:消息队列
消息队列面试连环问:如何保证消息不丢失?处理重复消息?消息有序性?消息堆积处理?Why do we need message queue?use for async processingservice decouplingstream control.异步处理:服务解耦:流量控制:接下来 消息队列的两种模型 这个我们也是很熟悉了。queue and pub-sub队列模型每条消息只能被一个消费者消费,而发布/订阅模型就是为让一条消息可以被多个消费者消费而生的,当然队列模型也可以原创 2021-12-10 05:45:49 · 230 阅读 · 0 评论 -
面试向:Docker和Kubernetes的关系以及如何使用
他们的关系其实是并不是完全的替代关系。看起来 Kubernates可以做的事情要比Docker多一点。他能做ECS可以做的:组测管理容器集群。Kubernetes与Docker之间,一个并不是另一个的替代品。恰恰相反,Kubernetes可以在没有Docker的情况下运行,而Docker可以在没有Kubernetes的情况下运行。但Kubernetes可以(而且确实)从Docker中获益匪浅,反之亦然。Docker是一个独立的应用程序,可以安装在任何计算机上运行容器化应用程序。容器化是一种在虚拟运行原创 2021-12-10 05:44:19 · 316 阅读 · 0 评论 -
利用几张图来描述Docker/Kubernetes来实现微服务架构以及CICD
神话还是现实?Docker 和 Kubernetes 的完美架构Software development has no rules.General process:what we need to do?Task tracker:create a dev env.API gateway:automate testDB and other services:docker register:mirror the dependencies:如果你还没有遇到你需要的包或依赖项原创 2021-12-10 05:43:53 · 278 阅读 · 0 评论 -
为什么我们要尽可能设计幂等性的服务?
什么是幂等性?其任意多次执行对资源本身所产生的影响均与一次执行的影响相同[并不是没有影响]。之前用在HTTP request上面 现在有了更深层的含义。幂等性是系统服务对外一种承诺(而不是实现),承诺只要调用接口成功,外部多次调用对系统的影响是一致的。声明为幂等的服务会认为外部调用失败是常态,并且失败之后必然会有重试。为什么需要这种幂等性服务的承诺?因为实际生产中 经常会遇到重复提交的情况。这种情况出现在HTTP请求中 出现在数据库的CRUD中。幂等也有不好的地方:1、增加了额外控制幂等原创 2021-12-10 05:42:55 · 115 阅读 · 0 评论