基础应用
文章平均质量分 88
程序员小2
全网同名,公众号、领资料
展开
-
十个程序员编程时的简单方法与技巧
你要记住,你写的代码是给人看的作为一名程序员,希望在你某天离开公司后回想起的若干个开心时刻中,有一个会是因为你面对自己刚刚出炉了一份让自己心动的代码的那份感动,而不要成为上面提到的那个“离开后,公司才知道他有多么重要”的家伙。现在开始,刻意练习所以最好的学习方式就是亲身经历,然后写下来分享给大家,这样才能让你真正懂得那些你原来认为懂得了其实未必懂得的道理。原创 2023-02-13 10:16:43 · 1105 阅读 · 0 评论 -
微服务拆分之道
服务拆分之后,由于服务是以独立进程的方式部署,所以服务之间通信就不再是进程内部的方法调用而是跨进程的网络通信了。在这种通信模型下服务接口的定义要具备可扩展性,否则在服务变更时会造成意想不到的错误。比如微服务的接口因为升级把之前的三个参数改成了四个,上线后导致调用方大量报错,推荐做法服务接口的参数类型最好是封装类,这样如果增加参数就不必变更接口的签名,而只需要在类中添加字段就可以了。原创 2023-01-24 17:47:34 · 743 阅读 · 1 评论 -
领域驱动设计(DDD)的几种典型架构介绍
具体说明看图中备注,总的来说就是通过实现与接口分离,让domain层尽量独立,而不耦合与任何模块,这里面包含了领域模型的业务逻辑代码,但不会依赖于具体技术实现,可以很方便更换基础设施层,提供给第三方web调用service。:随者业务的增长,我们打算分离出一个子系统,但是成本太高,每次都需要从头搭建一个子系统,效率低下。:比如我们最早的就是单体应用,多个业务之间可能都没有进行分层,之后我们业务多了,都各自混淆在一起,后来我们就通过MVC、SSM、分层等方式进行业务拆分,保证业务与业务之间解耦。原创 2023-01-21 10:04:01 · 1260 阅读 · 0 评论 -
浅谈京东服务接口的高可用设计
作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端 HTTP 或者是供其他服务 RPC 远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却不并没有想想的那么容易,接下来我们就看一下,一个高可用的接口是该考虑哪些内容,同时文中有不足的欢迎批评指正。原创 2023-01-19 11:50:54 · 1593 阅读 · 0 评论 -
什么是链路追踪?分布式系统如何实现链路追踪?
这里要说一下系统设计上的方案取舍问题了,首先如果针对产生的这个随机数作唯一性校验无疑会多一层调用,会有一定的性能损耗,但其实时间回拨发生的概率很小(发生之后由于机器时间紊乱,业务会受到很大影响,所以机器时间的调整必然要慎之又慎),再加上生成的随机数重合的概率也很小,综合考虑这里确实没有必要再加一层全局唯一性校验。在分布式系统,尤其是微服务系统中,一次外部请求往往需要内部多个模块,多个中间件,多台机器的相互调用才能完成。在这一系列的调用中,可能有些是串行的,而有些是并行的。插件化意味着可插拔,扩展性好。原创 2023-01-15 16:05:00 · 670 阅读 · 0 评论 -
阿里高级技术专家方法论:如何写复杂业务代码?
所谓的能力下沉,是指我们不强求一次就能设计出Domain的能力,也不需要强制要求把所有的业务功能都放到Domain层,而是采用实用主义的态度,即只对那些需要在多个场景中需要被复用的能力进行抽象下沉,而不需要复用的,就暂时放在App层的Use Case里就好了。内聚性是告诉我们How(要下沉到哪里),功能有没有内聚到恰当的实体上,有没有放到合适的层次上(因为Domain层的能力也是有两个层次的,一个是Domain Service这是相对比较粗的粒度,另一个是Domain的Model这个是最细粒度的复用)。原创 2023-01-14 11:07:54 · 744 阅读 · 0 评论 -
2017双11交易系统TMF2.0技术揭秘,实现全链路管理
在业务配置主线中,由项目的业务PD来看一下当前业务涉及到哪些业务域,以及这些业务域下面有哪些功能和产品可以去使用,哪些业务点是可以去扩展的。这其中就需要能力域模型的支撑,通过这个模型所透出的结构化数据,来研究平台中每个域具备的能力、每个能力具有的可变点,从而有针对性地进行设置。在配置模型里,通过关键的视图模板,进行模板透出,然后保存、下发配置数据到业务运行主线。业务配置主线和业务运行主线是相交互的。基于TMF 2.0关键模型,整个交易平台实现了业务定义可视、可管、可配。原创 2023-01-13 14:54:43 · 1179 阅读 · 0 评论 -
【教3妹学MQ】kafka的工作流程是怎么样的?
3妹,干嘛呢,要不要出去吃大餐?:在学习MQ呢,昨天你不是教了我嘛。我想再系统学习下MQ的工作流程是怎样的。:不错嘛,作为一个有追求的程序媛,就是不仅要知其然,还要知其所以然。:恩,向2哥大神看齐~:哈哈,说的我都不好意思了,我也有很多不懂的。只是工作时间长,经验比你丰富一些。:2哥,kfaka的工作流程是怎样的?你给我讲讲呗:emm, 肚子饿了,等我吃饱了再说。:午饭时间还早,先给我讲讲,呆会儿请你吃大餐。:好呀好呀,不许反悔啊。原创 2022-09-18 14:56:49 · 545 阅读 · 0 评论 -
快速搭建一个网关服务,动态路由、鉴权的流程
本文记录一下我是如何使用Gateway搭建网关服务及实现动态路由的,帮助大家学习如何快速搭建一个网关服务,了解路由相关配置,鉴权的流程及业务处理,有兴趣的一定看到最后,非常适合没接触过网关服务的同学当作入门教程。Gateway通过配置项可以实现路由功能,整合Nacos及配置监听可以实现动态路由,实现GlobalFilter, Ordered两个接口可以快速实现一个过滤器,文中也详细的介绍了登录后的请求鉴权流程,如果有不清楚地方可以评论区见咯。原创 2022-09-04 15:56:13 · 577 阅读 · 0 评论 -
彻底搞懂 Nginx 的五大应用场景
一、HTTPNginx本身也是一个静态资源的服务器,当只有静态资源的时候,就可以使用Nginx来做服务器,如果一个网站只是静态页面的话,那么就可以通过这种方式来实现部署。1、首先在文档根目录Docroot(/usr/local/var/www)下创建html目录,然后在html中放一个test.html。2、配置nginx.conf中的server。user mengday staff;http { server { listen 80; se原创 2022-05-02 16:40:46 · 1002 阅读 · 0 评论 -
谈谈复杂项目代码的应用分层
1、背景说起应用分层,大部分人都会认为这个不是很简单嘛 就controller,service, mapper三层。看起来简单,很多人其实并没有把他们职责划分开,在很多代码中,controller做的逻辑比service还多,service往往当成透传了,这其实是很多人开发代码都没有注意到的地方,反正功能也能用,至于放哪无所谓呗。这样往往造成后面代码无法复用,层级关系混乱,对后续代码的维护非常麻烦。的确在这些人眼中分层只是一个形式,前辈们的代码这么写的,其他项目代码这么写的,那么我也这么跟着写。但是在真正原创 2022-05-01 16:40:46 · 195 阅读 · 0 评论 -
MyBatis三种批量插入方式的比较,我推荐第3个
数据库使用的是SQLServer,JDK版本1.8,运行在SpringBoot环境下 对比3种可用的方式反复执行单条插入语句xml拼接sql批处理执行先说结论:少量插入请使用反复插入单条数据,方便。数量较多请使用批处理方式。(可以考虑以有需求的插入数据量20条左右为界吧,在我的测试和数据库环境下耗时都是百毫秒级的,方便最重要)。无论何时都不用xml拼接sql的方式。代码拼接SQL的xmlnewId()是sqlserver生成UUID的函数,与本文内容无关<insert id="i原创 2021-08-15 16:37:16 · 260 阅读 · 1 评论 -
【转载】百亿规模API网关服务Shepherd的设计与实现
以下文章来源于美团技术团队 ,作者充泽 志洋 李敏美团技术团队10000+工程师,如何支撑中国领先的生活服务电子商务平台?数亿消费者、数百万商户、2000多个行业、几千亿交易额背后是哪些技术在支撑?这里是美团、大众点评、美团外卖、美团配送、美团优选等技术团队的对外窗口。总第450篇2021年 第020篇在微服务架构下,服务拆分会让API的规模成倍增长,使用API网关来管理API逐渐成为一种趋势。美团统一API网关服务Shepherd就是在这种背景下应运而生,适用于美团业务且完全自研,用于替换传统原创 2021-07-16 22:26:25 · 297 阅读 · 0 评论 -
互联网电商购物车架构演变案例
购物车主要作用在于:和传统卖场类似,方便用户一次选择多件商品去结算。充当临时收藏夹的功能。对于商家来说,购物车是向用户推销的最佳场所之一。早期ERP拆分业务服务化拆分WCS拆分购物车功能模块概况层级设计群集设计云购物车从应用层 面上设计了三个—— 交互层、业务组装,基础服(横向)每一都 由一个或多集群组成交互层: 分为购物页 (加入购物车,车一去结算),结算页(车二,立即购,提交订单去 支付)业务组装层: 提供标准购物车流程 ,非提供标准购物车流程基础服务层:原创 2021-07-14 23:18:58 · 177 阅读 · 0 评论 -
微服务架构的设计模式
独享数据库(Database per Microservice)当一家公司将大型单体系统替换成一组微服务,首先要面临的最重要决策是关于数据库。单体架构会使用大型中央数据库。即使转移到微服务架构许多架构师仍倾向于保持数据库不变。虽然有一些短期收益,但它却是反模式的,特别是在大规模系统中,微服务将在数据库层严重耦合,整个迁移到微服务的目标都将面临失败(例如,团队授权、独立开发等问题)。更好的方法是为每个微服务提供自己的数据存储,这样服务之间在数据库层就不存在强耦合。这里我使用数据库这一术语来表示逻辑上的数据原创 2021-07-03 20:54:22 · 164 阅读 · 0 评论 -
抖音服务器带宽有多大,才能供上亿人同时刷?
最近看到一个有意思的提问:抖音服务器带宽有多大,为什么能够供那么多人同时刷?今天来给大家科普一下。图片来自 Pexels抖音,百度,阿里云,腾讯都是自建的数据中心,都是 T 级别出口带宽(总出口带宽),也就是达到 1T=1024G/s 的出口带宽,服务器总署基本都在 20 万台以上,甚至阿里云都超过了 100 万台。字节跳动的数据中心总带宽,可能在 10TB 级别左右,预期突破 15TB 级别不远了。一般情况下:总出口带宽 1TB,实际机房出口带宽可能只有 100G 上下,这是采用双(多)链路.原创 2021-06-20 17:47:08 · 229 阅读 · 0 评论 -
RPC的底层原理
前言什么是RPC?它的原理是什么?它有什么特点?如果让你实现一个RPC框架,你会如何实现?带着这些问题,开始今天的学习。2|0RPC概述2|1什么是RPC?RPC是远程过程调用(Remote Procedure Call)。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式地区分本地调用和远程调用。2|2优点分布式设计部署灵活解构服务扩展性强2|3有哪些RP原创 2021-06-20 16:08:33 · 710 阅读 · 0 评论 -
为什么有些人非技术出身,却能带好团队?
背景现实中没有找到一个现成的体系将管理经验很好地归纳到一起,于是采用一个自底向上的过程,先是将所有知识打碎,然后重新归类汇总。先是列举出了六十多种实践或方法,然后将它们划分成不同模块,并且思考这些模块之间的关系,最终建立一个相对完整且自洽的体系。有了这个体系,我们就能够以更高的视角来看待团队管理中的各种事务,并且有针对性地加以改善。团队管理图谱可以将团队管理的整个体系分为两个维度,十个模块。每个模块在两个维度之间有自己的定位,模块之间相互独立且互斥。这种划分不是绝对的,也可以有三维四维或者更多的模原创 2021-06-19 18:51:11 · 129 阅读 · 0 评论 -
揭秘 Uber API 网关的架构
近年来,API 网关成为微服务架构中不可或缺的一部分。因此,一个架构良好的 API 网关显得尤为重要。本文详细介绍了 Uber API 网关的架构设计,以飨读者。近年来,API 网关成了微服务架构中不可或缺的一部分。API 网关为 Uber 所有的应用程序提供一个统一入口,并提供了一个从后端微服务访问数据、逻辑或功能的接口。同时,它还提供了一个集中的地方来实现许多高级职责,包括路由、协议转换、速率限制、负载削减、丰富头信息并传播、数据中心亲缘性限定、安全审计、用户访问阻塞、移动客户端生成等。在上一.原创 2021-06-19 18:12:12 · 164 阅读 · 0 评论 -
API 设计最佳实践的思考
导读:API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。接下来,阿里巴巴研究员谷朴将给出建议,什么样的 API 设计是好的设计?好的设计该如何做?前言API 设计面临的挑战千差万别,很难有处处适用的准则,所以在讨论原则和最佳实践时,无论这些原则和最佳实践是什么,一定有适应的场景和不适应的场景。因此我们在下文中不仅提出一些建议,也尽量去分析这些建议在什么场景下适用,这样我们也可以有针对性地采取例外.原创 2021-06-02 21:01:36 · 152 阅读 · 0 评论 -
订单系统:从0到1设计思路
概述本文主要讲述了在传统电商企业中,订单系统应承载的角色,就订单系统所包含的主要功能模块梳理了设计思路,并对订单系统未来的发展做了一些思考。1. 订单系统在企业中的角色在搭建企业订单系统之前,需要先梳理企业整体业务系统之间的关系和订单系统上下游关系,只有划分清业务系统边界,才能确定订单系统的职责与功能,进而保证各系统之间高效简洁的工作。2. 订单系统与各业务系统的关系(1)对外系统:所有给企业外部用户使用的系统都在这一层,包括官网、普通用户使用的C端,还包括给商户使用的商家后台和在各个销售渠道进原创 2021-05-23 15:27:52 · 148 阅读 · 0 评论 -
美团即时物流的分布式系统架构设计
背景美团外卖已经发展了五年,即时物流探索也经历了 3 年多的时间,业务从零孵化到初具规模,在整个过程中积累了一些分布式高并发系统的建设经验。最主要的收获包括两点:即时物流业务对故障和高延迟的容忍度极低,在业务复杂度提升的同时也要求系统具备分布式、可扩展、可容灾的能力。即时物流系统阶段性的逐步实施分布式系统的架构升级,最终解决了系统宕机的风险。围绕成本、效率、体验核心三要素,即时物流体系大量结合 AI 技术,从定价、ETA、调度、运力规划、运力干预、补贴、核算、语音交互、LBS 挖掘、业务运维、原创 2021-02-24 09:48:07 · 226 阅读 · 0 评论 -
高内聚低耦合
模块模块就是从逻辑上将系统分解为更细微的部分, 分而治之, 复杂问题拆解为若干简单问题, 逐个解决.耦合主要描述模块之间的关系, 内聚主要描述模块内部. 模块的粒度可大可小, 可以是函数, 类, 功能块等等.耦合模块之间存在依赖, 导致改动可能会互相影响, 关系越紧密, 耦合越强, 模块独立性越差.比如模块A直接操作了模块B中数据, 则视为强耦合, 若A只是通过数据与模块B交互, 则视为弱耦合.独立的模块便于扩展, 维护, 写单元测试, 如果模块之间重重依赖, 会极大降低开发效率.内聚模块原创 2020-06-30 12:57:05 · 203 阅读 · 0 评论 -
Elasticsearch搜索执行过程及scroll游标查询
概要本篇主要介绍一下分布式环境中搜索的两阶段执行过程。两阶段搜索过程回顾我们之前的CRUD操作,因为只对单个文档进行处理,文档的唯一性很容易确定,并且很容易知道是此文档在哪个node,哪个shard中。但搜索比CRUD复杂,符合搜索条件的文档,可能散落在各个node、各个shard中,我们需要找到匹配的文档,并且把从各个node,各个shard返回的结果进行汇总、排序,组成一个最终的结果排序列表,才算完成一个搜索过程。我们将按两阶段的方式对这个过程进行讲解。查询阶段假定我们的ES集群原创 2020-06-29 23:18:22 · 730 阅读 · 0 评论 -
Docker概述
Docker 是一个开发、发布和运行应用程序的开放平台。Docker使您能够将应用程序与基础架构分离,以便快速交付软件。有了 Docker,你可以像管理应用程序一样管理你的基础设施。通过利用 Docker 快速发布、测试和部署代码的方法,您可以显著减少编写代码和在生产环境中运行它之间的延迟。Docker 平台Docker 提供了在松散隔离的环境(称为容器)中打包和运行应用程序的能力。隔离和安全性允许您在给定的主机上同时运行多个容器。容器是轻量级的,因为它们不需要额外的hypervisor负载,而是直原创 2020-06-25 16:09:17 · 330 阅读 · 0 评论 -
[git]git常用命令
1、基本命令1) 克隆代码库Git clone git clone 2) 更新代码库到最新版本git pull3) 查看工作区状态git status4) 提交代码到本地仓库git add #提交文件到暂存区git commit -m "注释说明"5) 推送到远程仓库git push #开始推送原创 2017-05-20 16:51:08 · 1277 阅读 · 0 评论 -
公网IP查询方法
1. 我们平时在家用的网络就是公网,直接在命令行运行ipconfig查询即可。2. 如果是公司内或者学校内的局域网,要查询公网IP有以下方式:1)查自己本机IP: 打开http://ip.cn/ ,显示的IP就是本机IP.2. 打开 http://site.ip138.com/, 可以查询任意域名的IP,注意每个域名可能有多个IP。原创 2017-05-20 15:06:11 · 19931 阅读 · 1 评论 -
【思考】跳槽后,如何在职场成为一个优秀的新人
成为一名优秀的新人,我认为要做到几点:第一印象很重要;快速的适应环境和高效的学习能力;良好的心态;乐观积极的思考。第一印象很重要刚到一个地方,你的一言一行都是别人对你的直观感受。公司请你去是干活的,所以在去之前要把部门用的技术栈和涉及业务都了解清楚,给别人一个很好的印象;穿着、说话谈吐、气场、知识面等也都非常重要。快速的适用环境和高效的学习适应环境。刚到一个地方,办公环境和原创 2017-05-28 11:51:24 · 1254 阅读 · 0 评论 -
[github]创建SSH密钥,并连接github
参考: http://www.blogways.net/blog/2013/04/10/generating-ssh-keys-4-github.html一、Windows环境下生成SSH key且连接GitHubstep 1、看看是否存在SSH密钥(keys)首先,我们需要看看是否看看本机是否存在SSH keys,打开Git Bash,并运行:$cd ~/原创 2017-05-14 15:09:23 · 1323 阅读 · 0 评论