SMSSオープンソースプロジェクトの開発ガイド

  SMSSは、目的は、軽量、高可用性、高セキュリティのセットを確立し、ビジネス・サポート・フレームワークの拡張を容易にすることを自分自身のオープンソースプロジェクトによって開始されます。上側の拡張サービス・インタフェースのためのTCP / IPレイヤの開発のためのSMSS。データ構造の送信シーケンスはいるProtobufによって達成されます。OpenSSLを介したデータ伝送中に行われるために、受信端でのファイル転送の要求を解読した後最初に送信秘密鍵によって受信者後方側によって署名された署名次いで暗号化されます。学習、開発、および展開の難しさを減らすサポートなしで完全にDBのコア機能、。クライアントは、電子を使用し、クロスプラットフォームの機能を維持するためのシンプルな十分。別の態様は、私はIT業界に入る人々のすべての港の夢に一度のために、自分自身のオープンソース・プロジェクトを作成する機能は、「個人の価値観」の反映であると考えています。また、私はこの夢が消えたことがないと信じていますが、さまざまな「祝福」は溺死しました。だから、3ヶ月前、私は自分自身を達成するために私に自分の手としての「祝福」を与えるために他の誰かのために待つことにした「幸運を。」

  プロジェクトはgitee(に公開された送信元アドレス)、技術検証とプロトタイプの開発が完了しています。クライアントのディレクトリの下にクライアント関連のソースコードは、JavaScriptの開発言語です。ディレクトリサーバの下にサーバー関連するソースコードで、開発言語はC ++です。拡張子は、Javaによってサポートされてもよいです。docディレクトリの下に主にいくつかいるProtobuf設計文書及び設計図書。

  開発プロセスは、アーキテクチャや技術的なポイントは収穫の多くを持っているかどうか、この論文では、これらの分野についての洞察を共有することができます。詳細については、私は次の分のプレゼンテーションに達成します。

(1)コアフレームワークは、できるだけ簡単に、より良いまたはより豊富ですか?

  フレームワークは、サイズに関係なく、最終的に特定のビジネスニーズに応えるため、またはサポートを提供したり、特定の実装を提供します。しかし、我々はちょうどあなたが汎用性を失うそうならば、設計フレームワークの具体的な事業であることはできません。期間は普遍的なコードはフレームと呼ばないではいけないです。抽象度の高い能力と依存剥離能力 - したがって、良いシステムを設計するためには、設計者は、少なくとも二つの側面に能力を持っている必要があります。まず、設計者はまず、抽象ビジネスニーズ、これらの原則を開閉するための抽象インタフェースに必要です。例えば、それぞれ、通信するためのA及びB必要モジュール、我々は、2つのモジュールソケットの一対で実現することができます。しかし、それを行うにはどのようにモジュールCを追加する必要がある場合は?より合理的な解決策は、モジュールXを設計することであるように、すべてのモジュールは、モジュールXとそれを登録する必要性を通信する必要があり、Xモジュールは、メッセージを送信する必要があります。すべて完了社内X.バッファ転送とメッセージ それは前方に来るとき、どのようにメッセージがそれを送信するためにBにAからXを修正することができるようにします。おそらく、あなたは送信保存したポイントを容易にするためのマップと、各モジュールの通信の終了を考えます。ポイントは、良い方法を送信することですが、ビジネスのニーズはA BCDそれにメッセージを送信することですか?この問題を解決するために、私は、IPパケットのTTLの概念を参照して、すべてのメッセージは、両方のカウンタを追加するために送信する必要があります。メッセージは、各ノードが、一つ毎に読み出しカウンタを読み取り通知、ポイント送信にブロードキャストまたはポイントであるかどうか。もちろん、唯一の右のノードは、それが対応するモジュールを受信すると、メッセージを送信します。カウンタがゼロである場合には、メッセージがリリースされていることを示しています。Xモジュールは、放送継続メッセージのキャッシュから削除することができます。はい、これはマイクロサービスの本質であり、モジュールXは、より人気の名前がある - ネットワークバス(netbus)。

目的(2)パッケージは、我々はパッケージをコーディングべきであるとは何ですか?

  私はこの質問には、開発作業の中で最もです尋ねました。これは単純な質問ですが、すべての開発者が同様の問題に直面するだろう。時々、私たちは一緒にコードスタックの多くは読まないでもメンテナンスもできないことがわかりました。しかし、時には我々はまた、移行パッケージはシンプルなロジックを理解することは困難であることができることを見出しました。だから、最終的に妥当である何をしますか?ここで私は、カプセル化の三つのレベルを提供します。これらの三つのレベルでは、戦略だろう一緒にヒープに加えて、コードをカプセル化することができます。

  私は、コードの分解をスケーリング:コードの一部は、長すぎるちょうど良い読み物です。そして、あなたは彼らに最初の単純な分類を行うには、いくつかの方法を使用することができます。メソッド名は、理解しやすいように、他の人は、おそらくいくつかのステップが対象も変更する必要があることを見てみましょう。このパッケージには、開発作業の大半の顔に、私たちは、綿密なビジネス分解し、抽象のための十分な時間を持っていない、すべての後に、複雑なビジネスの最も一般的な方法に対応しています。

  II。は、コールの難易度を減らす:いくつかの複雑なロジックのために、呼び出し側は、複数のパラメータを渡す必要があります。そして、あなたはデザインパターン(Builderパターン、プロキシモードなど)の使用を考慮することができることは分解、必要に応じて、偶数値を返すことができるのプロセスと呼ばれる内部に何が起こるか、発信者に伝えます。これにより、エラー、発信者の可能性を低減。

  III。隠された差:インタフェース設計およびプログラミングオブジェクト指向のインターフェースが内部実装を非表示にします。自明の利点。この局面は、Javaのような純粋なC ++インタフェースとして提供されていませんが、デザインが一般的です。

(3)それをよりよく注意?

  これを説明するために、我々はいくつかの概念を明確にする必要があります。あなたのコードは?どのようなコメントが説明する必要がありますか?どのように注釈を付けるために使用できますか?

  私。コード?:あなたのコードは、初心者ができるだけ早く始めることができ、すぐに開発に着手し、ソースコードレベルで見てする必要はありません許可している場合。コメントはできるだけ詳細にしなければならない、とのコードの偶数ラインは、コメントの三行を強調しすぎることはできません。

  II。何かを説明する必要が注意しますか?A:2つの側面。最初は他の人が最初のビジネスの知識を持つことができるように、このコードの役割を説明することです。アルゴリズムが続く文を作ります。

  III。悪用されるためにどのように注意してください?A:あなたのノートに基づいてドキュメントを生成できるツールが増えています。したがって、あなたはあなたのコードに加えて、これらのツールを使用し、それらを活用することを学ぶ必要があります。あなたがしなければならないのは、それに注釈を付けるために指定された形式での書き込みです。

  IV:ノート、良いこと?:なぜ、これほど多くの開発者がコメントを書きたくないん。実際には、書き込みノートへのより多くの理由であるだけでなく、時間の無駄、ので、アイデアの開発を中断します。注意事項は、多くの場合、追加の作業となった、コードが開発された後にのみアップ補足されています。時間のほとんどは、企業はめったにコードレビュー、書かれたコメントや誰の心配もしません。そして実際に、私は個人的にコードのコメントの多くを見るのが好きではありません。コメントを見て、コードを見て読んで影響を受けました。

  したがって、私はコメントを表示することです:あなたは、ドキュメント生成ツールのフォーマットに従ってコメントを書くことができます。ドキュメントを生成するためにソースコードを提出し、いずれかのワークロードを証明し、ほとんどの場合、要件を満たしています。メソッド内のコメントについては、キーの場所を説明します。

(4)私はもっと持つべきか、より多様な技術を学習の基本原則はすべき

  これは、本発明の自然のすべてに発見されました。新技術は、それが前に真剣に取られていなかった問題の一部を解決するために、多くの場合で、孤立したイベントではありません。コンセプトでJava NIOとIOは、私は多くの人が知っていると信じています。私は多くの人々が実際にちょうどそれが非ブロックIOがあることを知って、NIOの深い理解が不足している、仕事を見つけました。しかし、なぜそれが非ブロック、非ブロッキングは、より良い、それがブロックされているよりも、でなければならないのですか?私はlibeventを通じて学び、選択し提供してIO上のオペレーティング・システム・レベル自体を理解し、世論調査やIO多重化を目的としたいくつかのモデルをドライブのepoll。しかし、一つだけのシステムバスは、それが何であるかを最終的に多重化されます。多重化は、実際のプログラム(CPU動作)です。比較するとIOバス、CPUの非常に高い作業効率。旧ブロッキングIOプログラムは動作が完了するまで待機することが必要となるときにデータを送信/ファイルやネットワークから読み込む必要がある、との非ブロッキングIOモデルデータが準備した後になるまで、アプリケーションがプロセスでダウンを実行できるように処理戻ってきます。

  これは、伝統的な非ブロックIO IOよりも良好でなければなりませんか?JavaScript開発者は、さまざまなコールバック、でも意志確かには見知らぬ人の人々の経験を持っていた「憎しみを。」NIOモデルは、データの読み出しを待たないので、通常の状況下では、我々は、コールバック関数を登録することにより、タスクを完了する必要があります。あなたはIOの大規模な数を処理する必要がある場合は、コールバック関数は、プログレッシブレイヤになります。これは、開発と保守の難しさを増加します。

  あなたは、それ自体が矛盾していない新技術の基礎となる原則を学び、理解し、参照してください。私は基本的な原理のいくつかは、新しい技術を習得するために容易になります理解しています。また、デザインパターンとアルゴリズムは、我々は通常蓄積場所に必要があるということです。ユーザー名まで赤黒木完全なユーザーIDとルックス、上のユーザーが回転赤黒木をトリガしたときにオフにユーザーがログインの使用でSMSS。最後に、私は基本的な原理と新技術自体は、あなたが学ぶべき矛盾しないことを言いたいです。より多様な技術を使用して、さらに行くことができ、より強固な理論的基礎は、あなたがより安定して行くことができます。

(5)は、複雑なタスクに直面し、私は何に注意を払う必要があります

  そして、誰もが、それは私が常にSMSSの開発の問題について考えるものです。現在、各時間は、意図したテストの観察にパスを完了することができます限り、各可能な限り、私が最初にこの機能をテストする方法を検討する新機能を追加します。従来のウォーターフォール開発は明らかにされていない自分の空いた時間で行われるすべての設計および開発作業は、自由な時間を制御することは容易ではないので、もはや、適用されます。小さなファンクションポイントは書き込み後に検証することができないのであれば、数日後、私はオリジナルのアイデアを忘れることは非常に簡単でした。待ち時間は、それまでのテストには、問題を見ることは困難である場合には、より大きなモジュールの完成は、多くの場合、数週間かかります。あなたは自分の仕事や勉強を整理するために、この標準に従うことができた場合は、おめでとう、あなたは、アジャイル開発のキーポイントをマスターしています。

  多くの場合、設計の関連する側面の適用は、ビットで、このビットに練習を取得することです。

 

次に、私はSMSS技術で説明し、簡単に使用しました。

(1)ネットワーク多重モデルlibevent開発の使用、およびその基礎にスレッドプールを達成します。このような複数の接続は、システム性能を最大限に活用するために、実行中のスレッドに多重化することができます。

いるProtobuf方式を用いたデータ通信のシーケンスとして、(2)。このネットワークのJSONまたはXML活用よりも、チャネル占有率が低下しています。また、多言語、拡張後いるProtobuf支持体の特性によるものは非常に簡単でもあります。しかし、いるProtobufを使用した後、私はまた、そのサポートは、JSの終わりに改善することができました。

log4cplusを使用(3)現在のサーバ側のロギングシステム。Java開発者として、私はそれを選んだ理由であるlog4jの、非常に精通しています。

比較的Qtのを話すことは少し面倒になり - (4)クライアントが電子を使用して、すべての後に、便利なクロスプラットフォームの機能を提供する開発は、デスクトップの開発に最適なシステムです。しかし、電子は、すべての後に、(それは個人の能力によって制限されることもある)、容易ではない良いなどの言語の伝統的な開発モードとして、開発言語としてJavaScriptを使用することです。

(5)はgitのユーザログイン認証方式は、これらのタスクを完了するためのLinuxシステムを依存している描画します。

(6)利用者が取得した暗号化された情報は、OpenSSLの生成、サーバの秘密鍵によって行われ、対応するアルゴリズムサポートの暗号化と復号化をnodejs。

 

最後に、私たちは私の背後にある技術の共有に注力し続けることができることを願って、プラスグループはまた、私と通信するために歓迎されています。

おすすめ

転載: www.cnblogs.com/learnhow/p/12148718.html