架构设计
Neo Yang
长期从事电信增值服务软件的开发和设计工作。熟悉电信网络(固网,无线,数通)的规划、设计、评估业务及其IT系统的架构设计和实现方案。熟悉Java、C++语言及其开发框架。
展开
-
谈一下我对如何设计微服务接口的理解和思考
一、 概述微服务是一个独立运行、自带数据存储管理,对外提供接口的自治系统。微服务设计很关键的一点是微服务接口的设计。不同微服务经常是分配给不同的团队开发的,接口是各团队编程的契约。下面只讨论微服务间接口的设计,至于微服务内部子模块间接口的设计比较灵活,内部接口修改也不会有太大的影响,不在这里讨论。从我的理解来看,微服务接口设计要考虑以下几个方面:1、接口协议选型。2、定义接口内容。...原创 2018-02-18 13:16:21 · 7761 阅读 · 0 评论 -
在微服务框架中集成重量级算法服务的一种方案
概述**微服务架构作为当前最流行的架构体系,它所集成的服务大都是轻量级的(这也是为什么叫微服务)。单个微服务内部实现逻辑简单,处理客户响应时间短,经常做一些数据的增删改查操作。一般来说2到3千行代码就可以实现一个微服务。与轻量级的微服务对应的是重量级的算法服务。如何定义重量级服务呢?首先服务请求处理时间很长,一般在几分钟到几个小时都有可能,视处理的数据量大小而定;其次,算法的输入参数和输出...原创 2018-05-24 13:43:58 · 1398 阅读 · 0 评论 -
谈一下我对如何设计微服务子模块的理解和思考
前面写过两篇文章《谈一下我对如何做需求分析的理解和思考》、《谈一下我对如何设计微服务接口的理解和思考》从需求和外部接口的角度讲了开发一下微服务需要考虑的方方面面;本篇进入微服务内部,谈一下如何设计微服务内部的子模块。如何设计一个子系统(微服务)的内部模块?模块的划分和设计都有一些套路可寻,在微服务架构体系中,使用不同的开发语言 子模块有不同的载体。使用Java开发,子模块可以是不同的Jar包或...原创 2018-04-18 06:21:10 · 2412 阅读 · 0 评论 -
谈一下我对如何做老系统服务化改造的理解和思考
微服务架构是当前IT行业最流行的架构设计方案。微服务确实解决了软件开发中的一部分问题。服务自治,职责单一,可独立交付的特点也契合了敏捷开发的思想。设计一个全新的系统可以考虑用微服务架构,历史遗留系统也有必要逐步往微服务架构演进,来提升整个架构和产品的竞争力。笔者参与了对一个历史系统部分模块做服务化改造的项目。接下来谈一谈改造过程中的思考和策略。简单说一下项目背景,笔者加入的开发团队维护...原创 2018-07-25 07:57:44 · 2205 阅读 · 0 评论 -
用阻塞队列实现生产者消费者模式二(多线程消费)
在性能优化时使用生产者消费者模式,很多时候是为了提升数据的消费处理能力。采用多个消费者线程并发处理数据,能起到性能提升的效果。下文在“阻塞队列实现生产者消费者模式一(单线程消费)” 的基础上描述。一、在接口层增加测试接口package com.elon.rest;import com.elon.service.ProConsService;import io.swagger.annotations.Api;import io.swagger.annotations.ApiOperation;原创 2020-08-16 17:44:00 · 603 阅读 · 0 评论 -
用阻塞队列实现生产者消费者模式一(单线程消费)
生产者消费者模式不在23种常用设计模式里面,但在实际工作中也经常会用到。特别是在希望将数据的生产者和消费者做隔离,或者做多线程性能优化时能派上用场。代码目录结构目录说明:config:Swagger配置,方便通过swagger调用接口测试.constant: 枚举常量定义。model:模型定义。rest: restful接口定义。service: 实现业务逻辑。这一个简单的SpringBoot项目结构.核心代码说明EnumTaskEndType定义了几种常用的任务结束方式:pa原创 2020-08-16 14:39:24 · 810 阅读 · 1 评论 -
软件License认证方案的设计思路
销售license是商业软件的贯用商业模式。用户向商家购买软件安装盘搭载license许可,才可以使用该软件。我们作为软件开发者,为了保护自身的权益,在软件开发过程中也不可避免的会设计license管控机制。下面就讲一下设计一个基础的license控制机制需要考虑的方方面面。license管控方式license大体有两种管控方式,可概括为认证和鉴权。认证是指用户身份认证,鉴权是检验用户...原创 2018-03-18 21:01:46 · 49065 阅读 · 2 评论 -
谈一下我对如何设计一个子系统的理解和思考
一、概述 子系统的概念没有一个统一的定义,有人说是模块,有人说是构件,现在比较时髦的说法是微服务。这里的子系统是指可独立部署、独立升级、对外提供接口(一般是restful接口)的程序。 那么如何来设计这样一个子系统呢?从我多年做软件开发的经验和理解来看,设计这样一个系统需要做...原创 2018-02-09 23:44:58 · 1993 阅读 · 0 评论 -
经历一个工具软件版本架构设计后的总结
一、背景所开发版本目标是构建一个电信辅助软件系统,帮某运营商提升网络管理能力,降低维护成本。二、摸索&迷茫为降低成本,缩短开发周期。该软件系统基于一历史系统构建。新系统与历史系统定位不同,但数据来源大部分是相同的,也有不少功能是共用。应该说考虑基于历史系统构建是一条合理的快捷方式。 作为一个兼职的版本架构师(部门原架构师大牛已转其它部门),之前未参与过正式版本的架构设计(自学过架构相关的一些书籍)原创 2016-04-17 09:03:31 · 2145 阅读 · 1 评论 -
软件设计不是避免变化而是使变化局部化
软件设计不是避免变化而是使变化局部化一、前言 在软件开发过程中经常听开发人员抱怨得最多的就是怎么需求又变,之前要求不是这样的。每个版本我们都要求前期分析充分,实际运作时总是遗漏这,遗漏那。有些是在开发过程中发现的,有的在交付用户使用后才发现。 我们要求一次性把事情做对,实际上常常一次性把事情做错。目标离现实越远,越挫败。我们不是反对前期把需求分析清原创 2012-07-12 22:57:01 · 1386 阅读 · 0 评论 -
FTP环境搭建及客户代码调用公共方法封装
一、背景大型系统架构往往被分解为多个独立可运行的组件, 以满足性能、可靠性、可扩展性的需求。多个组件间的数据交互往往采用两种方式:小量数据通过Sock函数、RMI、WebService等接口方式传递;大量采用文件方式传递。采用文件传递数据有两种方式:通过Windows的NFS系统,文件共享。采用FTP/SFTP做文件上传、下载。本文讲解采用FTP服务传递文件时,FTP服务器环境搭建及公共代码组件。原创 2015-11-03 23:40:41 · 728 阅读 · 0 评论 -
子系统划分及子系统的依赖关系随记
软件按业务领域或者功能领域划分为多个子系统;子系统与子系统间存在交互和依赖。同时子系统还存在与周边其它软件的交互关系。一:子系统的划分 1)普通原创 2011-08-01 00:02:03 · 5599 阅读 · 0 评论