SMSS 오픈 소스 프로젝트 개발 가이드

  SMSS는 목표 경량, 고 가용성, 높은 보안 설정을 설정하고 비즈니스 지원 프레임 워크의 확장을 촉진하는 것을 내 자신의 오픈 소스 프로젝트에 의해 시작된다. 상단 확장 서비스 인터페이스에 대한 TCP / IP 계층 개발을위한 SMSS. 데이터 구조의 전송 시퀀스는 Protobuf 의해 달성된다. OpenSSL을 통한 데이터 전송 후 수신 측에서 복호화 암호화 동안 파일 전송 요구를 먼저 송신 한 비밀 키에 의해 상기 수신 측 후방 서명 한 서명을 수행하고있다. 학습, 개발 및 배포의 어려움을 줄일를 지원하지 않는 완전히 DB의 핵심 기능. 클라이언트는 전자를 사용하고, 간단한만큼 크로스 플랫폼 기능을 유지하기 위해. 또 다른 측면은, 나는 모든 항구는 IT 산업을 입력하는 사람들의 꿈을 일단 들어, 능력은 자신의 오픈 소스 프로젝트는 "개인적 가치"의 반영이다 만들 수 있다고 생각합니다. 나는이 꿈이 사라 결코 생각하지만, 다양한 "축복"익사. 그래서 나는 기다리기로 결정 3 개월 전에 다른 사람이 자신 달성하기 위해 자신의 손으로 나에게 그 "축복"을 제공하기 위해 "좋은 행운을."

  이 프로젝트는 gitee (에 게시 된 소스 주소 ), 기술 검증 및 프로토 타입 개발이 완료되었습니다. 클라이언트 디렉토리에 클라이언트 관련 소스 코드, 자바 스크립트 개발 언어입니다. 디렉토리 서버가 서버 관련 소스 코드는 아래, 개발 언어는 C ++입니다. 확장은 자바에 의해 지원 될 수 있습니다. doc 디렉토리 주로 일부 Protobuf 설계 문서 및 시공 문서에서.

  개발 프로세스, 아키텍처 또는 기술 포인트가 수확을 많이 가지고 있는지,이 논문은이 분야에 대한 통찰력을 공유 할 수 있습니다. 자세한 내용은 나는 다음 분 프리젠 테이션을 달성 할 것이다.

(1) 코어 프레임 워크는 가능한 한 간단하게 더 이상 풍부?

  크기에 관계없이 프레임 워크는 궁극적으로 특정 비즈니스 요구를 충족, 또는 지원을 제공하거나 특정 구현을 제공합니다. 그러나 우리는 당신이 다양성을 잃게 그렇다면, 디자인 프레임 워크의 특정 사업에 의해 수 없습니다. 기간은 보편적 인 코드가 프레임 호출 할 수 없습니다 있어야합니다. 매우 추상적 인 능력에 의존 박리 능력 - 따라서, 좋은 시스템을 설계하기 위해, 디자이너는 적어도 두 가지 측면 수있는 능력이 있어야합니다. 첫째, 디자이너는 첫째 추상 비즈니스 요구 열고 그 원칙을 닫기위한 추상적 인 인터페이스가 필요합니다. 예를 들어, 각각, 우리는 두 개의 모듈 소켓의 한 쌍으로 실현할 수 있고, 통신하기위한 필요와 B 모듈. 모듈 C를 추가가 필요하면하지만 어떻게 그것을 할까? 좀 더 합리적인 솔루션은 모듈 X를 설계하는 바와 같이, 모든 모듈은 모듈 X로 등록 할 필요가 의사 소통을해야하고, X 모듈은 메시지를 보낼 필요가있다. 전달 및 메시지는 모든 일 사내 X를 버퍼 그것은 앞으로 올 때, 어떻게 메시지를 보내 A에서 B로 X를 해결 할 수 있도록합니다. 아마도 당신은 전송 저장 점을 용이하게하기 위해지도와 각 모듈 통신의 끝 생각합니다. 요점은 좋은 방법을 보낼 수 있습니다,하지만 비즈니스 요구 사항 인 경우 BCD 그에게 메시지를 보내? 이 문제를 해결하기 위해, 나는 IP 패킷 TTL의 개념을 참조하십시오, 모든 메시지 요구는 카운터를 추가하는 모두를 확인할 수 있습니다. 메시지 전송 시점에 방송 또는 지점이든, 각 노드마다 판독하여 판독 한 카운터에 통지한다. 물론, 단지 바로 노드가 메시지를 보낼 것입니다, 그것은 해당 모듈을 받게됩니다. 카운터가 0 일 때 메시지가 출시되었을 수 있음을 나타냅니다. X 모듈은 방송을 계속 메시지에서 캐시에서 제거 할 수 있습니다. 예,이 마이크로 서비스의 본질이며, 모듈 X는 더 인기 이름이 - 네트워크 버스 (넷 버스 (Netbus)).

목적 (2) 패키지는 우리가 패키지를 코딩해야 무엇 무엇입니까?

  이 질문은 또한 개발 작업에서 가장입니다 물었다. 이것은 모든 개발자는 비슷한 문제에 직면하게 될 것이다, 간단한 질문입니다. 때때로 우리는 둘 다 읽거나 유지 관리 할 수 ​​있습니다 함께 코드 스택의 많은 발견했다. 그러나 때때로 우리는 또한 전환 패키지는 간단한 논리는 이해하기 어렵다 수 있습니다 것을 발견했다. 그래서 결국 어떻게 합리적으로 무엇을 할까? 여기 캡슐화의 세 가지 수준을 제공합니다. 이 세 가지 수준에서 당신은 전략이 될 것입니다 함께 힙에 추가 코드를 캡슐화 할 수 있습니다.

  코드의 내가 규모의 분해 : 코드 조각은 너무 오래 그냥 좋은 읽기입니다. 그럼 당신은 그들에게 먼저 간단한 분류를 할 수있는 몇 가지 방법을 사용할 수 있습니다. 메소드 이름은 다른 사람이 아마 여러 단계도 수정 대상이 될 필요가 볼 수 있도록, 쉽게 이해할 수 있습니다. 이 패키지는 또한 개발 작업의 대부분의 얼굴에, 우리는 깊이있는 비즈니스 분해 추상적 충분한 시간이 없어, 결국, 복잡한 비즈니스의 가장 일반적인 방법에 해당한다.

  . 이이 통화의 어려움을 줄일 : 몇 가지 복잡한 논리를 들어, 호출자는 여러 매개 변수를 전달해야 할 수도 있습니다. 그럼 당신은 디자인 패턴 (빌더 패턴, 프록시 모드 등)의 사용을 고려할 수있는 것은 분해 필요도 값을 반환 할 수 있습니다 과정이라고 안에 무슨 발신자를 알 수 있습니다. 이것에 오류 발신자의 기회를 감소시킨다.

  . III 숨겨진 차이 : 인터페이스 디자인 및 프로그래밍 객체 지향 인터페이스는 내부 구현을 숨 깁니다. 자명의 장점. 이 측면은 자바와 같은 순수 C ++ 인터페이스로 제공하지 않습니다,하지만 디자인은 일반적입니다.

(3) 더 나은 노트?

  이것을 설명하기 위해, 우리는 몇 가지 개념을 취소해야합니다. 귀하의 코드를 누구에게? 어떤 의견은 설명 할 필요가? 어떻게 주석을 사용할 수?

  에 전. 코드? A : 코드는 초보자는 가능한 한 빨리 시작할 수 있습니다 즉시 개발에 착수 소스 코드 수준에서 볼 필요가 없습니다 수 있도록하는 것입니다 경우. 주석이 가능한 한 상세하게 설명해야하고, 코드도 라인은 주석의 세 줄은 아무리 강조해도 지나치지 않다.

  II. 아무 것도 설명 할 필요는 노트? A : 두 가지 주요 측면. 첫 번째는 다른 사람이 먼저 비즈니스에 대한 지식을 가질 수 그래서,이 코드의 역할을 설명하는 것입니다. 알고리즘 다음은 성명을 발표.

  III. 어떻게 악용 될 수 참고? A는 : 노트를 기반으로 문서를 생성 할 수있는 도구의 수가 증가하고있다. 따라서 이러한 도구를 사용하여 코드를 플러스로 활용하는 법을 배워야한다. 당신이 할 일은 그것을 주석을 지정된 형식으로 쓰기입니다.

  IV : 주, 더 나은 그것을? A는 : 왜 그렇게 많은 개발자 코멘트를 작성하지 않으려는 않습니다. 때문에 시간의 다만 낭비, 사실, 아이디어의 개발을 중단됩니다 쓰기 노트 이유가 더있다. 참고 종종 코드가 추가 작업이 된 개발에만 후에 보충된다. 대부분의 경우, 회사는 거의 코드 검토, 서면 의견과 아무도 우려를하지 않는다. 그리고 사실, 저는 개인적으로 코드 주석을 많이보고 싶어하지 않습니다. 코멘트 봐, 코드와 영향에 모습을 읽어 보시기 바랍니다.

  따라서, 내가 의견을 볼 것은 : 문서 생성 도구의 형식에 따라 댓글을 작성할 수 있습니다. 문서를 생성하기 위해 소스 코드를 제출하거나 작업 부하를 증명하고 대부분의 경우 요구 사항을 충족. 방법 내부의 의견에 관해서는, 키 장소는 설명합니다.

(4) 좀 더 다양한 기술을 학습의 기본 원칙을 더하거나해야한다

  이는 본 발명의 모든 자연에 있습니다. 새로운 기술은 몇 가지 문제가 심각하기 전에 촬영되지 않았다 해결하기 위해 종종, 고립 된 사건이 ​​아니다. 개념 자바 NIO와 IO, 나는 많은 사람들이 알고있다 생각합니다. 나는 많은 사람들이 실제로 단지가 아닌 블록 IO는 것을 알고는 NIO에 대한 깊은 이해 부족, 작업을 발견했다. 그러나 왜 비 차단, 비 차단이 더 잘 차단보다이어야합니다? 나는, IO에 운영 체제 수준 자체가 선택 제공 설문 조사를 이해하고, libevent를 통해 배우고 IO가 다중화하기위한 여러 모델을 드라이브는 epoll. 그러나 하나의 시스템 버스는 그것이 무엇인지 결국 다중화. 다중화 실제로 프로그램 (CPU 동작)이다. 비교 IO 버스는 CPU의 훨씬 더 높은 작업 효율. 이전 작업이 완료 될 때까지 기다려야가 필요하면 프로그램에 필요한 데이터를 전송 파일이나 네트워크 /에서 읽기 및 비 차단 응용 프로그램이 데이터 될 때까지 과정에서 아래로 실행할 수 있도록 IO 모델이 준비 후 때 IO 차단 다시 처리를 온다.

  그것은 기존의 비 차단 IO IO보다 더해야? 자바 스크립트 개발자는 다양한 콜백, 심지어 윌 확실히 전혀 낯선 사람의 경험이 있었다 "싫어." NIO 모델은 데이터 읽기 대기하지 않기 때문에, 정상적인 상황에서 우리는 콜백 함수를 등록하여 작업을 완료해야합니다. 당신이 IO의 많은 수를 처리해야하는 경우, 콜백 함수는 진보적 인 층이 될 것입니다. 이는 개발 및 유지 보수의 어려움을 증가 할 것이다.

  당신은 배우고 자체가 모순없는 새로운 기술의 기본 원리를 이해를 참조하십시오. 나는 기본 원칙 중 일부는 새로운 기술을 습득하기 쉬울 것 이해합니다. 또한, 디자인 패턴과 알고리즘은 우리가 일반적으로 축적 배치해야한다는 것입니다. 사용자 이름까지 레드 - 블랙 트리 완전한 사용자 ID와 외모의 사용에 SMSS, 회전 레드 - 블랙 트리에 때 사용자 트리거 오프 사용자가 로그인. 마지막으로, 기본 원칙과 새로운 기술 자체는, 당신은 배워야한다 모순이 아니라고 말하고 싶다. 더 다양한 기술이 더 갈 수 있도록, 더 단단한 이론적 기초는 더 안정을 갈 수 있습니다.

(5) 복잡한 작업에 직면, 내가 관심을 지불해야하는지

  그리고 다른 사람, 즉 내가 항상 SMSS의 개발의 문제에 대해 생각하는 것입니다. 현재, 때마다 의도 테스트 관찰에 패스를 완료 할 수 있습니다까지 각 가능한, 내가 처음이 기능을 테스트 할 방법을 고려하는 새로운 기능을 추가. 전통적인 폭포 개발은 명확하지 않습니다 내 자신의 여가 시간에 의해 수행 모든 설계 및 개발 작업, 자유 시간 제어에 쉽지 않다 때문에 더 이상 적용됩니다. 작은 기능 지점이 작성 후 확인할 수없는 그렇다면, 며칠 후 나는 원래 생각을 잊지 매우 쉬웠다. 그때까지 대기이 문제를 알아보기 어려운 테스트 할 경우 더 큰 모듈의 완성은 종종 몇 주가 걸릴. 당신이 그들의 작업과 연구를 조직하는 것은이 표준을 따를 수 있다면, 축하합니다, 당신은 애자일 개발의 핵심 포인트를 마스터했다.

  대부분의 경우, 디자인의 관련 측면의 응용 프로그램이 비트에 의해이 비트 연습을 얻는 것입니다.

 

다음으로, 간단히 사용은 SMSS 기술에 대해 설명합니다.

(1) 네트워크 다중화 모델 libevent 개발의 사용, 및에 기초하여 스레드 풀을 달성한다. 그러한 복수의 접속 시스템의 성능을 최대한 활용하기 위해, 실행중인 스레드에 다중화 될 수있다.

protobuf 방식을 이용한 데이터 통신의 시퀀스로서 (2). 이 JSON 또는 네트워크의 XML을보다 효율적으로 사용하는 것보다, 채널 인원은 감소한다. 또한, protobuf 지원의 특성 다중 언어, 후 확장으로 인해 매우 간단이기도합니다. 그러나 protobuf 사용 후 나는 또한 그 지원은 JS의 끝에서 개선 할 수 발견했다.

(3) log4cplus를 사용하는 현재의 서버 측 로깅 시스템. 자바 개발자로서, 나는 내가 선택한 이유입니다 log4j에, 매우 잘 알고.

(4) 클라이언트는 전자는, 결국, 편리의 발전을 사용하고 바탕 화면의 개발을위한 선택의 시스템이 특징 크로스 플랫폼 제공 - 상대적으로 말하기 Qt는 조금 복잡하게합니다. 그러나 전자는, 결국, 쉽게 언어의 전통적인 개발 모드 좋은으로 (그것이 개인의 능력에 의해 제한 될 수 있음)하지, 개발 언어로 자바 스크립트를 사용하는 것입니다.

(5) 자식 사용자 로그인 인증 방식이 작업을 완료하는 리눅스 시스템을 의존립니다.

사용자에 의해 취득 (6) 상기 암호화 된 정보가 OpenSSL을 생성 한 서버 비밀 키에 의해 행해진 다 지원 암호화 및 대응하는 복호 알고리즘을 nodejs.

 

마지막으로, 나는 우리가 내 뒤에 기술 공유에 초점을 계속 플러스 그룹 또한 나와 함께 의사 소통을 환영 할 수 있기를 바랍니다.

추천

출처www.cnblogs.com/learnhow/p/12148718.html