avatar
文章
117
标签
212
分类
35

首页
文章
标签
分类
架构师
友情链接
开往
CodeTime
搜索
首页
文章
标签
分类
架构师
友情链接
开往

CodeTime

SpringCloudAlibaba入门系列(4) - 服务调用Feign和Dubbo
发表于2020-06-15|SpringCloudAlibaba入门系列
摘要:介绍基于Feign来实现HTTP Restful服务的简化调用和基于阿里巴巴的Dubbo组件来实现RPC远程服务调用。 4.1 基于Feign实现服务调用4.1.1 什么是FeignFeign是Spring Cloud提供的一个声明式的伪Http客户端, 它使得调用远程服务就像调用本地服务一样简单, 只需要创建一个接口并添加一个注解即可。 Nacos很好的兼容了Feign, Feign默认集成了 Ribbon, 所以在Nacos下使用Fegin默认就实现了负载均衡的效果。 4.1.2 Feign的使用1 加入Fegin的依赖 12345<!--fegin组件--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId></dependency> 2 在主类上添加Fegin的注解 1234@SpringBootAppl ...
SpringCloudAlibaba入门系列(3) - 服务治理组件Nacos
发表于2020-06-12|SpringCloudAlibaba入门系列
摘要:服务治理组件Nacos的介绍及应用,它包括了服务注册中心(discovery)和服务配置中心(config)。 3.1 服务治理介绍先来思考一个问题 通过上一章的操作,我们已经可以实现微服务之间的调用。但是我们把服务提供者的网络地址(ip,端口)等硬编码到了代码中,这种做法存在许多问题: 一旦服务提供者地址变化,就需要手工修改代码 一旦是多个服务提供者,无法实现负载均衡功能 一旦服务变得越来越多,人工维护调用关系困难 那么应该怎么解决呢, 这时候就需要通过注册中心动态的实现服务治理。 什么是服务治理 服务治理是微服务架构中最核心最基本的模块。用于实现各个微服务的自动化注册与发现。 服务注册:在服务治理框架中,都会构建一个注册中心,每个服务单元向注册中心登记自己提供服务的详细信息。并在注册中心形成一张服务的清单,服务注册中心需要以心跳的方式去监测清单中的服务是否可用,如果不可用,需要在服务清单中剔除不可用的服务。 服务发现:服务调用方向服务注册中心咨询服务,并获取所有服务的实例清单,实现对具体服务实例的访问。 通过上面的调用图会发现,除了微服务,还有一个组件是服务注册中 ...
SpringCloudAlibaba入门系列(2) - 微服务环境搭建
发表于2020-06-11|SpringCloudAlibaba入门系列
摘要:通过使用电商项目中的商品、订单、用户为案例进行实例演示。 2.1 案例准备2.1.1 技术选型maven:3.3.9数据库:MySQL 5.7持久层: SpingData Jpa其他: SpringCloud Alibaba 技术栈 2.1.2 模块设计springcloud-alibaba 父工程shop-common 公共模块【实体类】shop-user 用户微服务 【端口: 807x】shop-product 商品微服务 【端口: 808x】shop-order 订单微服务 【端口: 809x】 2.1.3 微服务调用在微服务架构中,最常见的场景就是微服务之间的相互调用。我们以电商系统中常见的用户下单为例来演示微服务的调用:客户向订单微服务发起一个下单的请求,在进行保存订单之前需要调用商品微服务查询商品的信息。 我们一般把服务的主动调用方称为服务消费者,把服务的被调用方称为服务提供者。 在这种场景下,订单微服务就是一个服务消费者, 商品微服务就是一个服务提供者。 2.2 创建父工程创建一个maven工程,然后在pom.xml文件中添加下面内容 1234567891011 ...
SpringCloudAlibaba入门系列(1) - 微服务介绍
发表于2020-06-08|SpringCloudAlibaba入门系列
摘要:系统架构的演变与微服务介绍 1.1 系统架构演变随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。 从互联网早起到现在,系统架构大体经历了下面几个过程: 单体应用架构—->垂直应用架构—->分布式架构—->SOA架构—->微服务架构,当然还有悄然兴起的Service Mesh(服务网格化)。 接下来我们就来了解一下每种系统架构是什么样子的, 以及各有什么优缺点。 1.1.1 单体应用架构互联网早期,一般的网站应用流量较小,只需一个应用,将所有功能代码都部署在一起就可以,这样可以减少开发、部署和维护的成本。 比如说一个电商系统,里面会包含很多用户管理,商品管理,订单管理,物流管理等等很多模块,我们会把它们做成一个web项目,然后部署到一台tomcat服务器上。 优点: 项目架构简单,小型项目的话, 开发成本低 项目部署在一个节点上, 维护方便 缺点: 全部功能集成在一个工程中,对于大型项目来讲不易开发和维护 项目模块之间紧密耦合,单点容错率低 无法针对不同模块进行针对性优化和水平扩展 1.1.2 垂直应用架构随着 ...
Kubernetes的简单介绍和基本原理
发表于2020-05-30|Kubernetes
Kubernetes又称k8s,因为首字母k和尾字母s之间正好有8个字母,所以简称k8s。k8s是由Google公司开源的一个容器编排引擎,用于自动化部署以及可伸缩的应用容器化管理。
Python中的模运算
发表于2020-05-27|Python
关于取模运算,你真的了解多少?负数的模运算呢?
二分查找的通用模板
发表于2020-04-28|算法
二分查找适用于对于有序数组的精确查找,例如从一个有序数组中找到指定元素的索引,可将时间复杂度从普通枚举的$ O(n) $降至$ O(log n) $,前提是数组必须是有序的,否则是没有办法使用二分查找的。二分查找的思想虽然简单,不过在实现过程中会有很多细节问题需要注意,例如判断循环是用left < right还是用left <= right,right是取最右的元素还是取数组的边界。本文想通过七个例题,约定一种规则或是模板,从此让写二分查找不再出现模棱两可的局面。 规则约定 left统一采用数组最左端即下标为0,right采用数组最右端的元素(非边界),这样二分查找的范围是一个闭区间[left,right],包括扫描两端的元素; while中统一使用left<=right,如果不加=,退出循环的条件是left==right,而我们采用的是[left,right]的闭区间,left和right相等时依然是有效区间,所以left==right时应继续进入循环查找,否则会导致元素遗漏; 既然采用[left,right]闭区间,当确定mid不是查找元素时,那么将数组一分为二 ...
Google经典面试题-扔鸡蛋
发表于2020-04-22|算法
这是一道Google公司的经典面试题,有多经典呢?经典到Google公司已经不用它做面试了! 问题假设有一栋大楼有100层,其中有1层比如F层,你从这一层或者比它低的层往下扔鸡蛋,鸡蛋不会碎,但是从比F层高的楼层开始扔,鸡蛋一定会碎。也就是说F层是个临界点,你的任务就是找到F层,同时给你2个鸡蛋,你能最少实验多少次(或者说扔多少次鸡蛋)能找到这个F层。 解答这个问题不是简单的二分查找问题,假如给你无数个鸡蛋,确实可以采用二分查找的方式,比如先从50层开始扔,如果碎了说明F层在50层之下,然后再从25层继续。。。如果没碎,说明在50层以上,下一个从75层开始扔。根据$ \log_2 100 \approx 6.64 $,说明只要7次一定能找到这个F。但是现在只有2个鸡蛋,假如第一个鸡蛋在50层就碎了,那么你只能知道F在1到50之间,但是只剩下一个鸡蛋了,你只能从1楼开始一层一层往上试,因为你不能让蛋碎掉,一旦碎了就无法后续测试了。假如F正好是49,也就是说你一直试到49都没有碎,那么你总共扔了50次蛋才得到结果。有没有办法可以实验最少次,一定能找到结果。答案是有的,比如这题的答案就是1 ...
生命游戏的模拟代码
发表于2020-04-02|算法
问题根据百度百科,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞与其八个相邻位置(水平,垂直,对角线)的细胞都遵循以下四条生存定律: 如果活细胞周围八个位置的活细胞数少于两个,则该位置活细胞死亡; 如果活细胞周围八个位置有两个或三个活细胞,则该位置活细胞仍然存活; 如果活细胞周围八个位置有超过三个活细胞,则该位置活细胞死亡; 如果死细胞周围正好有三个活细胞,则该位置死细胞复活; 根据当前状态,写一个函数来计算面板上所有细胞的下一个(一次更新后的)状态。下一个状态是通过将上述规则同时应用于当前状态下的每个细胞所形成的,其中细胞的出生和死亡是同时发生的。 示例: 输入:[ [0,1,0], [0,0,1], [1,1,1], [0,0,0]]输出:[ [0,0,0], [1,0,1], [0,1,1], [0,1,0]] 代码12345678910111213 ...
十大经典排序算法的介绍及实现
发表于2020-04-02|算法
编程排序可谓程序算法的第一课,本文介绍了十大经典排序算法的各自特点,适用场景以及Python代码实现。
1…9101112
avatar
兜兜转转
自律是最好的修行
文章
117
标签
212
分类
35
最新文章
为Spring Cloud Feign Client定制专属“装备”2025-04-10
curl 参数用法详解2025-03-13
五分钟带你快速了解啥是“AIGC”2024-03-30
从程序员的角度分析2024春晚刘谦魔术2024-02-15
深入理解Java并发包(JUC)中的锁与同步器2024-01-29
标签
动态规划Leetcode算法kubernetesk8sAI人工智能深度学习Tensorflow手写数字AIGC二叉树二叉搜索树平衡二叉树数据结构AVL回溯算法力扣背包问题广度优先遍历BFSB站电影下载m4s抓取树状数组读心术二分查找NginxSSL
归档
  • 四月 20251
  • 三月 20251
  • 三月 20241
  • 二月 20241
  • 一月 20241
  • 十月 20231
©2019 - 2025 By 兜兜转转
本地搜索